2013-07-05 3 views
0

Я пытался создать приложение для медиапланера для этого, я создал настраиваемый класс и его конструктор, и я также использую здесь концепцию потоков. Но я не могу использовать MediaPlayer.create() внутри этого метода, как я могу это сделать, пожалуйста, кто-нибудь помочь мне исправить это ...Ошибка при использовании метода create внутри run()

код

import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnCompletionListener; 

public class CustomPlayerActivity implements Runnable{ 

int song_id; 
long time; 
int button_id; 
MediaPlayer myStereo; 

public CustomPlayerActivity(int s_id, long Time, int b_id){ 

song_id = s_id; 
time = Time; 
button_id = b_id; 

} 
public void run(){ 
long start = System.currentTimeMillis(); 
long end = start + time; 
while (System.currentTimeMillis() < end){ 
myStereo = MediaPlayer.create(this, R.raw.chuva); 
      myStereo.setLooping(true); 
      myStereo.start(); 
      myStereo.setOnCompletionListener(new OnCompletionListener() { 

         @Override 
         public void onCompletion(MediaPlayer mp) { 
          // TODO Auto-generated method stub 
          myStereo.setLooping(true); 
          myStereo.start(); 
         } 
        }); 
        } 
        } 

        } 
+0

post th stack trace. попробуйте это 'myStereo = MediaPlayer.create (CustomPlayerActivity.this, R.raw.chuva)'. – Raghunandan

+0

такой же эффект ...... –

ответ

2

MediaPlayer.create() занимает Context в качестве первого аргумента.

http://developer.android.com/reference/android/media/MediaPlayer.html#create(android.content.Context, android.net.Uri, android.view.SurfaceHolder)

Вы передаете ему этот экземпляр CustomPlayerActivity, поэтому она не работает.

Чтобы исправить это, вы должны передать ему экземпляр Context, например, ссылку на деятельность, с которой вы ее вызываете. Вы можете передать его в свой конструктор, а затем использовать его в .create().

Как примечание стороны, я замечаю, что CustomPlayerActivity не распространяется Activity ... Я не уверен в вашей архитектуре, но это может быть частью проблемы.

+0

это не пользовательский интерфейс или класс активности ........ –

+1

Я знаю. MediaPlayer.create() * требует * контекста в качестве первого аргумента. Вы не проходите контекст. –

+0

жаль насчет названия класса –

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