【问题标题】:Android: mediaplayer createAndroid:媒体播放器创建
【发布时间】:2012-08-28 07:52:13
【问题描述】:

我有这个代码:

package com.example.pr;

import android.media.MediaPlayer;

public class Audio{

    MediaPlayer mp;

    public void playClick(){
        mp = MediaPlayer.create(Audio.this, R.raw.click);  
        mp.start();
    }
}

“创建”时出现错误,显示此消息“MediaPlayer 类型中的方法 create(Context, int) 不适用于参数 (Audio, int)”

为什么?

【问题讨论】:

  • audio 只是一个类而不是一个活动,因此 audio.this 不会影响上下文

标签: android android-mediaplayer


【解决方案1】:

MediaPlayer.create() 需要一个 Context 作为第一个参数。传入当前的Activity,它应该可以工作了。

尝试:

public void playClick(Context context){
    mp = MediaPlayer.create(context, R.raw.click);  
    mp.start();
}

在您的活动中:

audio = new Audio();
...
audio.playClick(this);

但不要忘记在声音结束后在 MediaPlayer 实例上调用 release,否则会出现异常。

但是,使用 SoundPool 播放短点击可能会更好。

【讨论】:

  • Audio 不是一个activity,它是我用来管理音频的一个单独的类,实际上我通过Audio.this
  • 迟到的答案:您需要一个 Android 上下文才能通过。不是你的音频课。因此,要么在 playClick 方法中添加 Context 参数,要么让每个 Activity 都有自己的 Audio 类实例,并在构造函数中传递 Activity Context。
  • 谁能告诉我如何在 mediaplayer.create 中添加 2 个原始文件
  • 如果你想同时播放两个声音,你必须创建两个 MediaPlayers
【解决方案2】:
public class Audio{

    MediaPlayer mp;
Context context;

     public Audio(Context ct){
     this.context = ct;
}
    public void playClick(){
        mp = MediaPlayer.create(context, R.raw.click);  
        mp.prepare();
        mp.start();
    }

来自您的活动:

Audio audio = new Audio(YourActivity.getApplicationContext());
audio.playClick();

【讨论】:

  • create 已经做好了准备。 MediaPlayer.create(context, R.raw.click).start();
猜你喜欢
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
相关资源
最近更新 更多