首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >音频流:防止后台应用终止

音频流:防止后台应用终止
EN

Stack Overflow用户
提问于 2019-04-09 01:18:35
回答 1查看 37关注 0票数 0

我正在开发一个音频流应用程序,但在一些设备上,应用程序在30秒后终止。用户可以在后台流式播放音频,但有时会停止播放,应用程序会终止。

这是非常恼人的,很难追踪,因为它只影响几个设备,而不是所有时间。以下是日志显示的内容:

代码语言:javascript
运行
复制
V/MediaPlayer-JNI: release
V/MediaPlayer-JNI: setListener
     disconnected
V/MediaPlayer-JNI: destructor
     disconnected
W/MediaPlayer: mediaplayer went away with unhandled events
D/ContentValues: onDestroy
Application terminated.

看起来这个应用被操作系统简单地杀死了。

当音频文件没有正确启动时,"mediaplayer with unhandled events“是一个常见的问题,但在这种情况下,错误发生在30秒后的流媒体上。

这是我使用的代码:

代码语言:javascript
运行
复制
public class SoundService extends Service implements MediaPlayer.OnPreparedListener, MediaPlayer.OnSeekCompleteListener, MediaPlayer.OnCompletionListener, MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnErrorListener {

public void onCreate() {

    Log.i("Script", "onCreate");

    if(player == null){
        try {
            Log.i("Script", "onCreate: Try");
            player = new MediaPlayer();
            player.setDataSource("enter url");
            player.prepareAsync();

            player.setOnBufferingUpdateListener(this);
            player.setOnCompletionListener(this);
            player.setOnErrorListener(this);
            player.setOnPreparedListener(this);
            player.setOnSeekCompleteListener(this);

        }

        catch (IllegalArgumentException e) { e.printStackTrace(); }
        catch (SecurityException e) { e.printStackTrace(); }
        catch (IllegalStateException e) { e.printStackTrace(); }
        catch (IOException e) { e.printStackTrace(); }

    }
    else{
        Log.i("Script", "onCreate: start");
        player.start();
    }
}

以下是监听程序:

代码语言:javascript
运行
复制
@Override
public void onPrepared(MediaPlayer mp) {
    Log.i("Script", "onPrepared()");
    player.start();

}

public int onStartCommand(Intent intent, int flags, int startId) {
    Log.i("Script", "onStartCommand");
    return Service.START_NOT_STICKY;
}

有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-04-09 23:55:03

确保使用startForeground通知在服务中启动媒体播放器。这应该会保留服务,而不会让操作系统杀死它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55578586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档