java– 跨多种活动的Android背景音乐;如何抓住Home按钮

java– 跨多种活动的Android背景音乐;如何抓住Home按钮,第1张

概述我想在我的应用程序的后台播放音频文件.很容易.我希望音乐能够持续存在,而不是在我的应用中的活动之间切换时停止或暂停.通过在onCreate方法中执行此 *** 作也非常简单和完成:protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);

我想在我的应用程序的后台播放音频文件.很容易.我希望音乐能够持续存在,而不是在我的应用中的活动之间切换时停止或暂停.通过在onCreate方法中执行此 *** 作也非常简单和完成:

    protected voID onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      ...      mp = MediaPlayer.create(MainActivity.this, R.raw.lostmexicancity);      mp.setLooPing(true);      mp.start();    }

问题?按HOME按钮时停止播放音乐.

当用户按下后退按钮时杀死声音似乎很容易.这就是我的所作所为并且效果很好:

    public voID onPause() {      if(this.isFinishing()){  //BACK was pressed from this activity        mp.stop();      }    super.onPause(); }

并不复杂,但这并没有抓住HOME按钮的按下.如果按下主页按钮,即使用户不再看到我的应用程序,音乐也会继续播放.

我已经看到了一些答案,涉及在清单中设置权限以获取我不应该做的任务,这对用户来说是危险的.除此之外,解决方案甚至没有工作.我已经看过涉及使用服务的解决方案,但这些都不起作用,因为主页按钮STILL就像之前一样播放音乐,因为似乎没有办法捕获它并且它没有“完成”应用程序(更不用说每当有人建议使用服务执行此任务时,多个人会进来并声明这不适合用于服务)

按下Home按钮时杀死音乐的唯一方法是在onPause中使用非条件stop(),但这并不好,因为当我用意图交换活动时会调用它,导致音乐在活动之间结束不好.

我很难想象像背景音乐这样的常见功能是如此困难,但是我发现帖子跟帖子一样跟我一样没有正确的答案,除了那些会在应用程序内的活动之间杀死音乐的答案.

Google Play商店中的所有其他应用如何实现这一目标,但在线似乎没有明确的答案?我可以用每个onPause()来停止和启动音乐,但这会导致音频中不专业的差距,更不用说它会一次又一次地从头开始启动背景音频,这是不可接受的.

解决方法:

我对AndroID编程有点新鲜(几个月),今天我遇到了同样的问题(也许你还在做什么?)

我使其工作如下:

假设我有MainActivity,而在MainActivity中我有Btn2导致SecondActivity,而Btn3导致ThirdActivity.

我在MainActivity的开头声明:

public static boolean shouldplay = false;

然后我实现了我的onStop()方法:

public voID onStop() {    super.onStop();    if (!shouldplay) { // it won't pause music if shouldplay is true        player.pause();        player = null;    }}

如果布尔值shouldplay设置为true,那么我的onStop()将不会被完全调用,我的音乐也不会关闭.然后,我必须决定何时将其设置为true.当我从MainActivity切换到SecondActivity时,我是通过Intent完成的,那时我将shouldplay设置为true:

button Btn2 = (button) findVIEwByID(R.ID.Btn2);    Btn2.setonClickListener(new VIEw.OnClickListener() {        @OverrIDe        public voID onClick(VIEw v) {            Intent intent = new Intent(MainActivity.this, SecondActivity.class);            shouldplay = true;            startActivity(intent);        }    });

Btn3也是如此.

现在,我们想要寻找的最后一件事是,如果我在访问SecondActivity或ThirdActivity后返回MainActivity,那么shouldplay将被设置为true.我尝试的第一件事是在调用Second和ThirdActivity时(在​​他们的onCreate()中)将其设置为false但它想要工作,可能因为来自Main的onStop()和来自其他人的onCreate()被同时调用(坦率地说,我现在并没有真正的生命周期).
有效的方法是每次我们启动Main的onCreate()时将shouldplay设置为false:

shouldplay = false;

这适合我.
让我知道它是否适合你,
干杯,
bro.

总结

以上是内存溢出为你收集整理的java – 跨多种活动的Android背景音乐;如何抓住Home按钮全部内容,希望文章能够帮你解决java – 跨多种活动的Android背景音乐;如何抓住Home按钮所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1117052.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存