
我想在我的应用程序的后台播放音频文件.很容易.我希望音乐能够持续存在,而不是在我的应用中的活动之间切换时停止或暂停.通过在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按钮所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)