এই সমস্যাটি এখানে নির্দিষ্ট হার্ডওয়ারের সাথে বাগ হিসাবে শুরু হয়েছিল বলে মনে হয়েছিল তবে API 8 তে উপলব্ধ mCamera.setDisplayOrientation (ডিগ্রি) এ কলটি ব্যবহার করে অতিক্রম করা যেতে পারে So সুতরাং আমি এটি কীভাবে এটি প্রয়োগ করি:
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if (isPreviewRunning) {
mCamera.stopPreview();
}
Parameters parameters = mCamera.getParameters();
Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
if(display.getRotation() == Surface.ROTATION_0) {
parameters.setPreviewSize(height, width);
mCamera.setDisplayOrientation(90);
}
if(display.getRotation() == Surface.ROTATION_90) {
parameters.setPreviewSize(width, height);
}
if(display.getRotation() == Surface.ROTATION_180) {
parameters.setPreviewSize(height, width);
}
if(display.getRotation() == Surface.ROTATION_270) {
parameters.setPreviewSize(width, height);
mCamera.setDisplayOrientation(180);
}
mCamera.setParameters(parameters);
previewCamera();
}
And the previewCamera method :
public void previewCamera() {
try {
mCamera.setPreviewDisplay(mSurfaceHolder);
mCamera.startPreview();
isPreviewRunning = true;
} catch(Exception e) {
Log.d(APP_CLASS, "Cannot start preview", e);
}
}
এটি একটি এইচটিসি ডিজায়ারে ছিল এবং ঘূর্ণনটি কী তা বলতে প্রথমে আমাকে প্রথমে প্রতিটি রোটেশন চেকটিতে লগিংয়ের বিবৃতি দিতে হয়েছিল এবং তারপরে ডিভাইসটি ঘোরার সময় লগগেট আউটপুট দেখেছিলাম output এইচটিসি ডিজায়ারের জন্য 0 ফোনটি ছিল যেমনটি আপনি প্রত্যাশা করেছিলেন (প্রতিকৃতি), 90 ডিগ্রি ফোনটি 90 ডিগ্রি COUNTER-CLOCKWISE ঘুরিয়ে দিচ্ছিল (আমি ধরে নিয়েছিলাম এটি ঘড়ির কাঁটার দিকে হবে)। কোডটিতে আপনি দেখতে পাবেন যে ফোনটি 90 বা 180 ডিগ্রি ছিল তখন আমার কোনও ডিসপ্লে রোটেশন করার দরকার নেই - ডিভাইসটি এটি নিজেই হ্যান্ডেল করেছে বলে মনে হচ্ছে। কেবলমাত্র একটি পয়েন্ট সঠিকভাবে কাজ করছে না: আপনি যখন ডিভাইসটিকে 90 ডিগ্রি ঘড়ির কাঁটার দিকে ঘুরিয়ে দেন তখন 270 ডিগ্রি ঘূর্ণন হয় এবং ঠিক যদি আপনি ডিভাইসটি 270 ডিগ্রি ঘড়ির কাঁটার বিপরীতে ঘোরান তবে এটি সঠিকভাবে ক্ষতিপূরণ হিসাবে উপস্থিত হয় না।
পিএস যথাযথ ঘোরাফেরা প্রস্থ এবং উচ্চতার swapover নোট করুন।