gpt4 book ai didi

Android 在广播接收器中异步拍照

转载 作者:行者123 更新时间:2023-11-29 01:50:18 26 4
gpt4 key购买 nike

我已经为上述问题苦苦挣扎了一段时间,所以非常感谢任何答案。

首先,我的主要目标是在收到 Intent 时拍照(在广播接收器内)。我已经尝试了很多上述方法但无济于事。以下(为了视觉清晰度显示相关代码 fragment )代码说明了一种方法:

public class ArduinoReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
takePictureUsingCamera();
} }

函数 takePictureUsingCamera() 调用处理相机的类中的一个函数(例如,在 FrameLayout 中显示相机预览)。具体函数调用android中的android takePicture函数: this.mPreview.mCamera.takePicture(null, null, this.mPicture);

但是,当我收到 Intent 时,应用程序崩溃了。我觉得这背后的原因是拍照可能需要在广播接收器内部完成太多工作。 (我使用一个按钮通过简单的图片捕获测试了此功能,并且效果很好。)

因此,我尝试的第二种方法是创建一个 Intentservice,它会在收到 intent 时处理拍照(以及存储图片等其他相关任务)。

服务的 onHandleIntent(Intent intent) 方法现在将具有 this.mCameraView.takePicture(filename) 函数。但是,我需要使用 Intent 将我的 CameraView 类作为对象传递给此服务。为此,我创建了一个 Serializable 类并尝试使用 intent 的 putExtra 方法传递它。几次崩溃后,我意识到 CameraView 类不可序列化(它在 FrameLayout 中显示相机预览)。

我想到执行上述操作的另一种方法是在新服务中创建 cameraView 对象本身,但为此我需要上下文和对主要 Activity 的引用——我认为这不能使用 Intent 传递。这留下了开始新 Activity 以在广播接收器内拍照的选项 - 看起来又做了太多工作。正如我之前所说,我已经尝试了几种方法,但都没有取得成功。我个人认为这不会成为这样的问题。我真的很感激并非常感谢任何回答者。

最佳答案

我不是 100% 确定您要尝试做什么,但听起来您想在收到广播时触发某些事情(拍照)?

为此,您可以在主 Activity 中创建一个处理程序,然后在收到广播时向其发送一条消息。你的 Activity 中有这样的东西。

Handler myHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
takePicture();
}
});

broadcastReceiver = new YourReceiverClass(myHandler);

intentFilter = new IntentFilter(
"your_package_name.YourReceiverClass");
registerReceiver(broadcastReceiver, intentFilter);

接收器中有类似这样的东西

private Handler handler;
public YourReceiverClass(Handler handler) {
this.handler = handler;
}

public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
if (handler != null) {
handler.sendEmptyMessage(0);
}
}

关于Android 在广播接收器中异步拍照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18553848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com