我正在运行一个应用程序,在手机上始终保持竖屏状态。当拍照时,我可以在手机上看到竖向的图像,但是当存储到SD卡中时,图像总是横向的。以下是我的做法,在清单文件中使用:
<uses-feature android:name="android.hardware.screen.portrait" />
当我启动相机时,我使用以下代码来改变方向:
camera = Camera.open(); // <8>
Camera.Parameters parameters = camera.getParameters();
camera.setDisplayOrientation(90);
parameters.setZoom(16);
parameters.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(parameters);
然后在保存照片时,我使用以下代码。
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream outStream = null;
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
mExternalStorageAvailable = mExternalStorageWriteable = true;
Log.d(TAG, "Can Write ");
try {
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "/" + System.currentTimeMillis() + ".jpg";
Log.d(TAG, "File: " + baseDir + fileName);
outStream = new FileOutputStream(baseDir + fileName);
outStream.write(data);
outStream.close();
Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
Log.d(TAG, "Cant Write ");
} else {
// Something else is wrong. It may be one of many other states, but all we need
// to know is we can neither read nor write
mExternalStorageAvailable = mExternalStorageWriteable = false;
Log.d(TAG, "Other Error ");
}
}
};