android MediaPlayer不播放mp3文件

android MediaPlayer不播放mp3文件,android,audio,mp3,media-player,Android,Audio,Mp3,Media Player,我已经编写了我能想到的最基本的应用程序来尝试播放mp3文件,但它不起作用。我没有收到任何错误,但当应用程序启动时,声音不会播放 public class soundtest extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate

我已经编写了我能想到的最基本的应用程序来尝试播放mp3文件,但它不起作用。我没有收到任何错误,但当应用程序启动时,声音不会播放

public class soundtest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MediaPlayer mp = new MediaPlayer();
        mp.create(getApplicationContext(), R.raw.norm_iphone_money);
        mp.start();
    }
}
我错过了什么?我在res/raw文件夹中有“norm\u iphone\u money.mp3”。该文件在Windows Media Player和iTunes中可以正常播放


我正在使用Java SDK和Eclipse for Java的最新版本。该应用程序针对Android 2.2,尽管没有声音,但在模拟器中运行良好。

尝试替换以下两行:

MediaPlayer mp = new MediaPlayer();
mp.create(getApplicationContext(), R.raw.norm_iphone_money);
用这一行:

MediaPlayer mp = MediaPlayer.create(this, R.raw.norm_iphone_money);
看看这是否有效。

应该以静态方式访问从MediaPlayer类型创建的静态方法(Context,int)。试试这个:

MediaPlayer.create(getApplicationContext(), R.raw.norm_iphone_money).start();
它也会用这一行播放.mp3

mp.create(getApplicationContext(), R.raw.norm_iphone_money).start();

问题是媒体卷设置为0(而不是振铃器卷)。您可以通过以下方式进行设置:

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 20, 0);
查看和,以了解setStreamVolume(int,int,int)参数的说明。

我建议:

MediaPlayer mp = new MediaPlayer();
//bla bla bla
mp = MediaPlayer.create(getApplicationContext(), R.raw.norm_iphone_money);
我也有同样的问题 在我点击启动媒体播放器后,屏幕变黑,应用程序停止

我刚换了衣服

MediaPlayer mp=MediaPlayer.create(这个,R.raw.sound);mp.start()

MediaPlayer mp=MediaPlayer.create(this,R.raw.sound).start()


我不确定这两者有什么区别,但它解决了我的问题。

问题在于emulator,更改emulator或尝试在真实设备上运行应用程序。这应该可以解决问题。

您在真正的设备上试过吗?在MediaPlayer开始()之前,您可能会尝试使用setDataSource()和prepare()方法,而不是create(),但如果create()不起作用,我怀疑这会起作用。如果这两种方法在编译代码中的逻辑上有任何不同,我会感到震惊。不,但我自己测试它,它只能以这种方式工作,这和他最初写的不一样。如果有人愿意解释这到底是为什么,那就太好了。播放原始音频资源在这里进行了描述,当然在逻辑上是不同的。create将调用static方法,并返回从未存储的MediaPlayer的新实例。然后,他对默认构造的实例调用start()。这是什么StartupActivity编辑了答案!StartupActivity只是我项目中的一项活动。但是我们可以通过上下文类来引用常量AUDIO_服务。活动只是一个上下文,而音频服务是一个静态常量上下文字符串。非常感谢您的反馈,Deppzz!我生命中有一个小时。。。谢谢@玄通武。。请在(AudioManager.STREAM_MUSIC,20,0)中解释这些值20和0…谢谢,添加了解释链接。为什么要创建媒体播放器
mp
,然后用
MediaPlayer的输出替换它。创建
?如果只链接方法调用,则没有区别。