2013-08-04 4 views
0

С помощью этого кода я хочу воспроизвести звук. Я называю метод PlaySound() для негоОшибка в среде MediaPlayer Android

public class MainActivity extends Activity 
{ 
private MediaPlayer cPiano; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(new GameView(this)); 
} 
public void playSound(){ 
    cPiano = MediaPlayer.create(this, R.raw.cpiano); 
    cPiano.start(); 
    } 
} 

public class GameView extends SurfaceView 
{ 
private SurfaceHolder surfaceHolder; 
private MainActivity mainActivity 

public GameView(Context context) 
{ 
    super(context); 
    mainActivity = new MainActivity(); 
    } 

    @Override 
protected void onDraw(Canvas canvas) 
{ 
    for (Pixel pixel : pixelList) 
    { 
     pixel.onDraw(canvas); 
    } 
    for (int i = pixelList.size() - 1; i >= 0; i--) 
    { 
     Pixel pixel = pixelList.get(i); 
     if (pixel.isBar()) 
     { 
      mainActivity.playSound(); 
      removePixel(i); 
      break; 
     } 
    } 
} 

Это только самый важный код. Но когда он должен воспроизводить звук, я получаю ошибку Runtime для Android

Что не так?

+0

удалить этот 'mainActivity = new MainActivity()' вы можете запустить медиаплеер в игровом режиме, так как у вас есть контекст активности. – Raghunandan

+0

Хорошо, но я все еще получаю сообщение об ошибке. LogCat говорит, что onDraw() создает проблемы – Stupe

ответ

1

Вместо mainActivity.playSound() линии попытки:

MainActivity host = (MainActivity)getContext(); 
host.playSound(); 

Также удалите новый MainActivity(). Действие НЕ должно быть непосредственно созданным

+0

Он работает, спасибо вам большое. – Stupe

Смежные вопросы