gpt4 book ai didi

android - 从通知中的按钮开始和停止录制

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:49 24 4
gpt4 key购买 nike

我有一个带有“记录”按钮的通知。所需的功能是应用程序将在单击按钮时开始使用设备的麦克风录音,并在再次单击时停止。它的行为应该类似于音乐应用程序的播放/暂停按钮。

还有其他方法可以在应用程序内部开始和停止录制。

我尝试以多种方式实现这一点,但我很困惑。按钮本身接收一个 PendingIntent,所以一开始我给了它在我的应用程序中记录声音的 Activity 的 Intent 。当然,这会使应用程序本身成为焦点,所以这不好。

接下来,我尝试创建一个 IntentService 来处理两种 Intent - “开始录制”和“停止录制”。我设法让它开始 录制,但似乎一旦它处理了“开始录制” Intent ,它就会自行关闭,所以我的 MediaRecorder 对象丢失了。

我尝试通过实现 onBind 使我的 IntentService 可绑定(bind),但我真的混淆了 .aidl 文件等。

这里正确的方法是什么?

最佳答案

您可以尝试在 onStartCommand(...) 回调中在普通的旧 Service 中开始录制,并将您的 PendingIntent 设置为开始录制启动此服务。

要停止服务,您不能制作停止服务的PendingIntent,因此您必须发挥创意,并且可以使用BroadcastReceiver 来接收停止服务的 Intent 。

所以你会做出你的服务:

public class RecordingService extends Service {
MediaRecorder mRecorder;
...
public int onStartCommand(Intent intent, int flags, int startId) {
// initialize your recorder and start recording
}

public void onDestroy() {
// stop your recording and release your recorder
}
}

和你的广播接收器:

public class StopRecordingReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
context.stopService(new Intent(context, RecordingService.class));
}
}

PendingIntent 开始录制:

Intent i = new Intent(context, RecordingService.class);
PendingIntent pi = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);

PendingIntent 停止录制:

Intent i = new Intent(context, StopRecordingReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);

关于android - 从通知中的按钮开始和停止录制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30808691/

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