声音(MediaPlayer)在模拟器上工作但不在真正的Android设备上

时间:2015-08-30 17:44:51

标签: android android-service android-mediaplayer android-permissions android-developer-api

我使用的模拟器是Galaxy Nexus API 22,我的背景音乐(mp3)在它上面完美运行并作为服务运行。但是,它不适用于我的SUMSUNG Galaxy Note,它有API 16,但我不认为这是与API相关的问题。

我需要在Manifest中写一些<uses-permission .../>吗?或其他解决方案。

提前谢谢!!

以下是问题

Context context = getApplicationContext();
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);
if (!taskInfo.isEmpty()) {
    ComponentName topActivity = taskInfo.get(0).topActivity;
    if (!topActivity.getPackageName().equals(context.getPackageName())) {
        SoundService.pauseSound();
        Toast.makeText(WelcomePage.this, "YOU LEFT YOUR APP", Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(WelcomePage.this, "YOU SWITCHED ACTIVITIES WITHIN YOUR APP", Toast.LENGTH_SHORT).show();
    }
}

我在onPause()活动WelcomePage中使用了这些代码(这是我的应用中的&#39; MainActivity&#39;),以便在我按HOME键时暂停背景音乐或者其他什么。但我发现Toast有时会立即显示"YOU LEFT YOUR APP"当这个Activity出现时没有做任何事情,所以我认为这些代码就是问题所在。谁能帮我? 谢谢!!

2 个答案:

答案 0 :(得分:0)

试试这段代码,它可以在这里工作:

在活动中,在这样的oncreate之前声明媒体播放器会话;

MediaPlayer mp = new MediaPlayer();

将mp3文件放在res / raw文件夹中!

最终把这段代码放在你的java上! (如果你想把这个游戏自动放在onCreate上,或者你可以把它放在一个按钮中,如果你想要的话)。

mp.stop(); // Stop this if run in another place
mp = MediaPlayer.create(this, R.raw.nameofyourfile);//Load your file from folder
mp.setLooping(false); // Set loop is off, if you want it's on change (true)
mp.start(); // start playing your sound

我希望能帮到你!

答案 1 :(得分:0)

错误是什么,你可以在这里复制日志吗?也许这是mp3的路径问题。