電話を回転させてもカメラの向きが変わらないようにして、カメラがどの向きでも正立した写真を撮れるようにしたいと思います。現在、画像は 1 つを除くすべての方向で正しく回転されません。2.2 を実行している HTC Incredible でテスト済み:
- ポートレート モードでは、本来あるべき姿から時計回りに 90 度回転した画像が表示されます。
- デバイスを縦向きから反時計回りに回転させると、180 度回転した画像になります。
- デバイスを縦向きから時計回りに回転すると、正しい向きの画像が得られます。
カメラの実装に関連するコードは次のとおりです。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);
// Set up camera's SurfaceView and SurfaceHolder
surfaceView = (SurfaceView) findViewById(R.id.camera_surface);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Camera.Parameters p = camera.getParameters();
p.setPreviewSize(width,height);
}
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
try {
camera.setPreviewDisplay(surfaceHolder);
} catch (IOException e) {
camera.release();
}
camera.startPreview();
}
ユーザーベースを最大化するために、アプリケーションが 4 以上の API レベルと互換性を持つようにしたいので、より高い API レベルに固有のものを使用しない回答を希望します。ありがとう!