我正在为 capstone 项目开发相机应用程序。
在此模式下,我的目标是用户:
- 拍摄照片(主线程)
- 将图片发送到服务器(后台线程)
- 开始预览相机(主线程)
- 用户可以拍摄另一张照片(可选)
- 从服务器检索并显示结果
我正在使用此代码来捕获图像并且它有效。
mCamera.takePicture(mShutterCallback, null, new PhotoHandlerGame(getApplicationContext(), mCamera));
我的问题是:如何通知我图片已被捕获并保存,以便开始将其发送到服务器而不阻塞主线程?
更新:程序员回答后,我在 onCreate 中添加了这段代码
private BroadcastReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_mode_action);
IntentFilter filter = new IntentFilter();
filter.addAction("android.hardware.action.NEW_PICTURE");
filter.addAction("com.android.camera.NEW_PICTURE");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG,"Image saved - broadcast receiver");
}
};
registerReceiver(receiver,filter);
但是,它不起作用,这段代码有什么问题吗?
最佳答案
public static final String ACTION_NEW_PICTURE
广播 Action :相机拍摄一张新照片,并且该照片的条目已添加到媒体存储中。 getData() 是图片的 URI。
常量值:“android.hardware.action.NEW_PICTURE”
欲了解更多信息: http://developer.android.com/reference/android/hardware/Camera.html#ACTION_NEW_PICTURE
关于java - Android 如何通知我照片已被捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33856152/