2012-02-09 234 views
1

我做Android上背景音乐播放小的模拟,但它不工作...有代码:音乐播放

[我的活动,在的onCreate]

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

[音乐服务类]

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 2012-02-09 19:31:23

+0

我想我有一个与频道有关的错误 - 已损坏。它会影响吗? – Madrugada 2012-02-09 19:47:00

回答

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(); 
} 

}

您必须在您的“res”文件夹中创建一个“原始”文件夹,而不是将您的音乐文件粘贴到该原始文件夹中。

+0

并在您的manifest.xml中添加以下代码 2013-12-30 12:02:40