Tôi đang làm việc trên một hoạt động Máy ảnh tùy chỉnh cho ứng dụng của mình. Tôi đã làm theo hướng dẫn từ trang web dành cho nhà phát triển Android tại đây: http://developer.android.com/guide/topics/media/camera.html Mọi thứ có vẻ hoạt động tốt, ngoại trừ chức năng Gọi lại không được gọi và hình ảnh không được lưu. Đây là mã của tôi:Chức năng chụp ảnh Máy ảnh Android không gọi chức năng Gọi lại
public class CameraActivity extends Activity {
private Camera mCamera;
private CameraPreview mPreview;
private static final String TAG = "CameraActivity";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);
// Create an instance of Camera
mCamera = getCameraInstance();
// Create our Preview view and set it as the content of our activity.
mPreview = new CameraPreview(this, mCamera);
FrameLayout preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(mPreview);
Button captureButton = (Button) findViewById(R.id.button_capture);
captureButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.v(TAG, "will now take picture");
mCamera.takePicture(null, null, mPicture);
Log.v(TAG, "will now release camera");
mCamera.release();
Log.v(TAG, "will now call finish()");
finish();
}
});
}
private PictureCallback mPicture = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.v(TAG, "Getting output media file");
File pictureFile = getOutputMediaFile();
if (pictureFile == null) {
Log.v(TAG, "Error creating output file");
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
} catch (FileNotFoundException e) {
Log.v(TAG, e.getMessage());
} catch (IOException e) {
Log.v(TAG, e.getMessage());
}
}
};
private static File getOutputMediaFile() {
String state = Environment.getExternalStorageState();
if (!state.equals(Environment.MEDIA_MOUNTED)) {
return null;
}
else {
File folder_gui = new File(Environment.getExternalStorageDirectory() + File.separator + "GUI");
if (!folder_gui.exists()) {
Log.v(TAG, "Creating folder: " + folder_gui.getAbsolutePath());
folder_gui.mkdirs();
}
File outFile = new File(folder_gui, "temp.jpg");
Log.v(TAG, "Returnng file: " + outFile.getAbsolutePath());
return outFile;
}
}
Sau khi nhấp vào nút, tôi nhận nhật ký: "bây giờ sẽ chụp ảnh", "bây giờ sẽ gọi kết thúc". Các hoạt động kết thúc thành công, nhưng các chức năng gọi lại không được gọi trong chức năng
mCamera.takePicture(null, null, mPicture);
(Không có các bản ghi từ callback mPicture hoặc các chức năng getMediaOutputFile) và không có tập tin trong vị trí đó đã được chỉ định.
Bất kỳ ý tưởng nào? :) Cảm ơn rất nhiều!
Tôi cần một số trợ giúp cho nhau trong C# .. Hãy –