gpt4 book ai didi

android - 如何完成后台播放录音的任务和不同 Activity 的工作?

转载 作者:搜寻专家 更新时间:2023-11-01 08:53:29 26 4
gpt4 key购买 nike

我对 android 开发有点陌生,我遇到了一个场景,希望得到专家的宝贵反馈。

在我的应用程序中,用户在 Activity1 上,用户从中选择一个客户端并导航到 Activity2。在 Activity2 上,用户应该能够播放录音文件,在播放录音时,用户可以导航到 Activity3、Activity4 或 Activity5,收听音频并进行输入。在 Activity3、Activity4 和 Activity5 上,用户将拥有暂停或停止音频的控件。如果用户从 Activity2 导航回 Activity1,音频将自动停止。

我很困惑,它既可以通过服务完成,也可以通过后台任务完成。

非常感谢任何有值(value)的建议/代码示例。

最佳答案

我肯定会使用 service .您可以绑定(bind)到服务并从中调用方法。

Intent it = new Intent(MainActivity.this, MyService.class);
bindService(it, mConnection, Context.BIND_AUTO_CREATE);

绑定(bind)到每个 Activity 中的服务,这样您就可以随心所欲地使用它。不要忘记在您的 Activity 中取消绑定(bind)它的 onDestroy。

if(mBound)unbindService(mConnection);

只需停止服务即可停止播放。

stopService(new Intent(this, MyService.class));

这是我使用的 serviceConnection。

private ServiceConnection mConnection = new ServiceConnection() {

@Override
public void onServiceConnected(ComponentName className,IBinder service) {
// We've bound to LocalService, cast the IBinder and get LocalService instance
LocalBinder binder = (LocalBinder) service;
mService = binder.getService();
mBound = true;
}

@Override
public void onServiceDisconnected(ComponentName arg0) {
mBound = false;
}
};

将它放在您的服务中以返回 Activity :

@Override
public IBinder onBind(Intent intent) {
return mBinder;
}

public class LocalBinder extends Binder {
MyService getService() {
// Return this instance of LocalService so clients can call public methods
return MyService.this;
}
}

最后,这将在启动服务后调用 startService(intent);请注意,它返回 Service.START_STICKY。这将防止您的服务被终止,除非操作系统的内存非常少。

public int onStartCommand(Intent intent, int flags, int startid) {      
return Service.START_STICKY;
}

希望我的回答对你有所帮助,祝你好运。

关于android - 如何完成后台播放录音的任务和不同 Activity 的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000095/

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