如何构建一个不受打瞌睡的Android影响的无线电应用程序?

时间:2017-06-15 07:59:08

标签: android radio android-doze-and-standby doze

参考此库https://github.com/iammert/RadioPlayerService 我有播放/暂停收音机的代码

   if (!mRadioManager.isPlaying())
                mRadioManager.startRadio(RADIO_URL[0]);
            else
                mRadioManager.stopRadio();

以及进行处理的方法

 @Override
public void onRadioStarted() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            //TODO Do UI works here.
            mTextViewControl.setText("RADIO STATE : PLAYING...");
        }
    });
}

@Override
public void onRadioStopped() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            //TODO Do UI works here
            mTextViewControl.setText("RADIO STATE : STOPPED.");
        }
    });
}

MyBroadcast类

public class MyBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Intent intent1 = new Intent(context, MainActivity.class);
    intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent1);
}

但是在android 7中,当我关闭屏幕后5-8分钟收音机停止播放音乐。我在后台做了另一个例子,它仍然是一样的。请任何人都可以建议我如何构建一个不受打瞌睡影响的无线电应用程序

2 个答案:

答案 0 :(得分:2)

您必须为此创建Foreground服务。通常当任何长进程运行时(如下载,播放音乐或视频等),它会在状态栏和锁定屏幕中创建通知。

  

注意:您应该只将前台服务用于用户希望系统立即执行或不中断的任务。这种情况包括将照片上传到社交媒体,或者即使在音乐播放器应用程序不在前台时播放音乐。您不应该仅仅为了阻止系统确定您的应用程序处于空闲状态而启动前台服务。

https://developer.android.com/guide/components/services.html#Foreground

答案 1 :(得分:0)

以下链接是一个广泛的例子。请记住,这需要另一个权限级别。 https://developer.android.com/training/scheduling/wakelock.html