Androidで写真をキャプチャしようとして数日かかります。画像をキャプチャしたら、ファイルをFTPにアップロードするという考えです。SurfaceView を拡張するクラスがあり、それが表示されると、デバイスの背面カメラの画像が再生されます。カメラの画像をクリックして、画像をJPEG形式で保存したいと思います。
私は何十もの解決策を試しましたが、今得られるのは JPEG の完全な黒です。私は正しいと思いますが、何かが欠けています。
カスタム クラスの onClick イベントで使用するコードは次のとおりです。
try {
//create bitmap screen capture
Bitmap bitmap;
this.setDrawingCacheEnabled(true);
//Freezes the image
mCamera.stopPreview();
bitmap = Bitmap.createBitmap(getDrawingCache(), 0, 0, this.getLayoutParams().width, this.getLayoutParams().height);
this.setDrawingCacheEnabled(false);
//Create temp file
file = File.createTempFile("prueba", ".JPG", Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES));
//Copy bitmap content into file
FileOutputStream fos = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 60, fos);
fos.flush();
fos.close();
//Free camera
mCamera.release();
mCamera = null;
}catch(Exception e){
e.printStackTrace();
}
mCamera は android.hardware.Camera で、特定のサイズが選択され、幅と高さが適切に収まるように this.layoutParams にコピーされます。これらはすべて surfaceCreated() メソッドで行われます。
誰かが私を助けてくれることを願っています。
どうもありがとうございました。