2012-02-09 4 views
1

Я сделал небольшое моделирование фоновой музыки игры на Android, но он не работает ... есть код:Музыкальный плеер в Android (эмулятор)

[моя деятельность, в OnCreate]

Intent music = new Intent(this, MusicService.class); 
startService(music); 

[и есть класс MusicService]

public class MusicService extends Service implements MediaPlayer.OnErrorListener { 

private final IBinder mBinder = new ServiceBinder(); 
MediaPlayer mPlayer; 
private int length = 0; 

public class ServiceBinder extends Binder { 
    MusicService getService() 
    { 
     return MusicService.this; 
    } 
} 

@Override 
public IBinder onBind(Intent arg0){ 
    return mBinder; 
} 

@Override 
public void onCreate() { 

    super.onCreate(); 
    mPlayer = MediaPlayer.create(this, R.raw.song1); 
    mPlayer.setOnErrorListener(this); 

    if(mPlayer!= null) 
    { 
    mPlayer.setLooping(true); 
    mPlayer.setVolume(100,100); 
    } 


    mPlayer.setOnErrorListener(new OnErrorListener() { 

     public boolean onError(MediaPlayer mp, int what, int extra){ 

      onError(mPlayer, what, extra); 
      return true; 
     } 
    }); 
} 

@Override 
public int onStartCommand (Intent intent, int flags, int startId) 
{ 
    mPlayer.start(); 
    return START_STICKY; 
} 

public void pauseMusic() 
{ 
    if(mPlayer.isPlaying()) 
    { 
     mPlayer.pause(); 
     length=mPlayer.getCurrentPosition(); 
    } 
} 

public void resumeMusic() 
{ 
    if(mPlayer.isPlaying()==false) 
    { 
     mPlayer.seekTo(length); 
     mPlayer.start(); 
    } 
} 

public void stopMusic() 
{ 
    mPlayer.stop(); 
    mPlayer.release(); 
    mPlayer = null; 
} 

@Override 
public void onDestroy() 
{ 
    super.onDestroy(); 
    if(mPlayer != null) 
    { 
     try{ 
      mPlayer.stop(); 
      mPlayer.release(); 
     } 
     finally { 
      mPlayer = null; 
     } 
    } 
} 

public boolean onError(MediaPlayer mp, int what, int extra) { 

    Toast.makeText(this, "music player failed", Toast.LENGTH_SHORT).show(); 
    if(mPlayer != null) 
    { 
     try{ 
      mPlayer.stop(); 
      mPlayer.release(); 
     } 
     finally { 
      mPlayer = null; 
     } 
    } 
    return false; 
} 
} 

Я не могу слышать песню в эмуляторе. Я сделал закончить файл манифеста, как это:

<service 
    android:name="MusicService" 
    android:enabled="true"> 
</service> 

Есть ли еще что-то добавить к манифесту, есть проблема с моим кодом или с моим эмулятором? Спасибо!

+0

Любая ошибка в logcat? – Deva

+0

Я думаю, что у меня есть ошибка, связанная с каналом - сломанная. Это влияет? – Madrugada

ответ

0

Я стригу свой код на фоне музыки на Android. Это решит вашу проблему.

Я головой создал два класса, первый из которых является MainActivity, а второй - MyService.

код MainActivity является

общественный класс MainActivity расширяет активность реализует OnClickListener {

}

Теперь код MyService является

общественного класса MyService проходит служба {

private static final String TAG = "MyService"; 
MediaPlayer player; 

@Override 
public IBinder onBind(Intent intent) { 

    return null; 
} 

@Override 
public void onCreate() { 
    Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onCreate"); 

    player = MediaPlayer.create(this, R.raw.braincandy); 
    player.setLooping(false); // Set looping 
} 

@Override 
public void onDestroy() { 
    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onDestroy"); 
    player.stop(); 
} 

@Override 
public void onStart(Intent intent, int startid) { 
    Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show(); 
    Log.d(TAG, "onStart"); 
    player.start(); 
} 

}

U необходимо создать «сырую» папку в папке «res», чем вставить музыкальный файл в эту необработанную папку.

+0

и добавьте в свой манифест следующий код. <сервис android: name = ". MyService" android: enabled = "true" /> –

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

  • Нет связанных вопросов^_^