проблема решена:
в 2.2 У меня не было проблемы
в 2.3, изображение сохранялось искаженным - это было исправлено с помощью метода, который я назвал "getBestPictureSize", который в основномидентичный методу, который я использовал для получения наилучшего размера предварительного просмотра для формата экрана
, это метод для получения наилучшего размера изображения для устройства, на котором работает приложение ...
private Camera.Size getBestPicturSize(int width, int height)
{
Camera.Size result=null;
Camera.Parameters p = camera.getParameters();
for (Camera.Size size : p.getSupportedPictureSizes()) {
if (size.width<=width && size.height<=height) {
if (result==null) {
result=size;
} else {
int resultArea=result.width*result.height;
int newArea=size.width*size.height;
if (newArea>resultArea) {
result=size;
}
}
}
}
return result;
}
это обратный вызов surfaceChanged, в котором описанный выше метод используется для правильного определения размера изображения, полученного в результате camera.takePicture (...);
private Camera.Size getBestPicturSize(int width, int height)
{
Camera.Size result=null;
Camera.Parameters p = camera.getParameters();
for (Camera.Size size : p.getSupportedPictureSizes()) {
if (size.width<=width && size.height<=height) {
if (result==null) {
result=size;
} else {
int resultArea=result.width*result.height;
int newArea=size.width*size.height;
if (newArea>resultArea) {
result=size;
}
}
}
}
return result;
}
, вы также можете использовать этот метод определения размера изображения, чтобы получитьПредварительный размер, отключив строку:
for (Camera.Size size : p.getSupportedPictureSizes()) {
для
for (Camera.Size size : p.getSupportedPreviewSizes()) {
надеюсь, это кому-нибудь поможет, так как я потратил около 10 часов на то, чтобы эта функция не работала на моем2.3.4, но на моем 2.2
это, как говорится, при запуске getBestPictureSize на 2.2 вызывает принудительное закрытие.еще не понял, как я собираюсь справиться с этим