Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android总是在后台停止音频流_Android_Android Studio_Android Mediaplayer_Audio Streaming - Fatal编程技术网

Android总是在后台停止音频流

Android总是在后台停止音频流,android,android-studio,android-mediaplayer,audio-streaming,Android,Android Studio,Android Mediaplayer,Audio Streaming,我正在开发一个广播流媒体应用程序,几分钟后,在后台音频总是会停止 舱单: <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI

我正在开发一个广播流媒体应用程序,几分钟后,在后台音频总是会停止

舱单:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
在MainActivity上,我启动流:

    Intent i = new Intent(this, StreamService.class);
    i.setAction("play");
    startService(i);
设备锁定几分钟后,会出现此错误并停止播放:

W/MediaPlayerNative: info/warning (703, 0)
W/MediaPlayerNative: info/warning (701, 0)
703和701与缓冲和播放音频有关,但它会永久停止一切,每次都是如此,即使有良好的wifi连接。如果你一直打开应用程序,它将永远工作,但如果你在几分钟内关闭应用程序,则会出现此错误。然后你必须重新打开应用程序,停止并重新启动流

有一个关于流的警告,但代码中的所有内容似乎都是正确的:

W/MediaPlayer: Use of stream types is deprecated for operations other than volume control
W/MediaPlayer: See the documentation of setAudioStreamType() for what to use instead with android.media.AudioAttributes to qualify your playback use case
我错过什么了吗?有什么想法吗

谢谢

编辑:

发现在流启动时调用onInfo以及在我获得703错误时调用onInfo:

@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
    Log.e(TAG, "Service onInfo");
    return false;
}

当你的应用程序转到后台时,它将在稍后停止。要继续播放音频,您必须先启动服务

舱单:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
服务:

onCreate() {
    super.onCreate()
    startForeground(ID, createNotification())
}

我在实习测试期间创建了一个应用程序,以保持播放音频或音乐,即使该应用程序已从我使用android后台服务的最近历史应用程序中清除

您可以在Github查看代码,在那里您可以了解android中的服务


后台服务最多持续30分钟@泰恩是对的。他需要前台服务。