Мое приложение захватывает и сохраняет фотографию в определенном каталоге.Проблема в том, когда я иду в галерею, чтобы открыть захват.Просмотр миниатюр идеальный, но при открытии фотографии с помощью HTC Player фотография чередуется / поцарапана.
Я использую Activity, которая реализует SurfaceHolder.Callback.
PictureCallback myJpeg = new PictureCallback() {
private boolean compress;
public void onPictureTaken(byte[] arg0, Camera arg1) {
File path = getPath();
File file = getName(path, imageNum);
imageNum ++;
try {
if(!path.exists())
path.mkdirs();
OutputStream imageFileOS = new FileOutputStream(file);
imageFileOS.write(arg0);
imageFileOS.close();
MediaScannerConnection.scanFile(getApplicationContext(),
new String[] { file.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if(imageNum < numDisp)
myCamera.startPreview();
else{
goToViewCapture(file);
}
}
};
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
try{
if(myPreviewRunning){
myCamera.stopPreview();
myPreviewRunning = false;
}
Camera.Parameters p = myCamera.getParameters();
p.setPreviewSize(width,height);
myCamera.setParameters(p);
myCamera.setPreviewDisplay(holder);
myCamera.startPreview();
myPreviewRunning = true;
}catch(Exception e){e.printStackTrace();}
}
public void surfaceCreated(SurfaceHolder holder) {
myCamera = Camera.open();
try {
Camera.Parameters parameters = myCamera.getParameters();
parameters.set("jpeg-quality", 70);
parameters.setPictureFormat(PixelFormat.JPEG);
myCamera.setParameters(parameters);
myCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
myCamera.release();
}
//myCamera.startPreview();
}
public void surfaceDestroyed(SurfaceHolder holder) {
myCamera.stopPreview();
myPreviewRunning = false;
myCamera.release();
myCamera = null;
}
Спасибо !!!
РЕШЕНИЕ:
прокомментируйте эту строку -> //p.setPreviewSize(width,height);