0

我是安卓开发新手。我制作了一个带有 3 个按钮播放、暂停、停止的音乐播放器。当我点击应用程序图标时,Splash 将运行并在 3 秒后熄灭,当我点击播放时,它会播放歌曲,其他按钮可以正常工作。但是,如果我播放音乐并返回主屏幕音乐将播放,但如果我再次单击应用程序图标,它将启动一个新实例,如果单击播放按钮,它将开始另一首歌曲,这意味着现在有 2 首歌曲正在运行。

另一个问题是当我接到电话时我的歌曲恢复了,当我接听电话时,它仍然在讨论如何解决这些问题。

我播放音乐的代码是

MediaPlayer mySong;
    Button playButton,pauseButton,stopButton,creditsButton;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activitymain);

        playButton=(Button) findViewById(R.id.play);
        pauseButton=(Button) findViewById(R.id.pause);
        stopButton=(Button) findViewById(R.id.stop);
        creditsButton=(Button) findViewById(R.id.credit);
        mySong=MediaPlayer.create(StartingPoint.this, R.raw.song);

        playButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                mySong.start();
            };
        });

pauseButton.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                mySong.pause();
            };
        });
stopButton.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        mySong.pause();
        mySong.seekTo(0);
    };
});

我的清单文件是

 <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="9" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        >
        <activity
            android:name="com.simplyitsols.hanumanchalisa.Splash"
            android:label="@string/app_name" 
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.simplyitsols.hanumanchalisa.StartingPoint"
            android:label="@string/app_name" 
            android:launchMode="singleTask">
            <intent-filter>
                <action android:name="com.simplyitsols.hanumanchalisa.STARTINGPOINT" />
                <category android:name="android.intent.category.Default" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.simplyitsols.hanumanchalisa.Credits"
            android:label="@string/app_name" >
        </activity>
    </application>
4

3 回答 3

2

You have to create a service: http://developer.android.com/reference/android/app/Service.html

After you have achieved that, you have to implement onPause and onResume of your activity in order to do what you want. onPause is triggered when you go back to home or you receive an incoming call. OnResume is self explanatory :)

http://developer.android.com/guide/components/fundamentals.html

于 2013-06-24T08:41:41.490 回答
0

根据本教程 http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/

您需要将此代码放在活动的类中:

@Override
public void onDestroy(){
    super.onDestroy();
    mp.release();
...
}
于 2013-07-26T05:35:34.590 回答
0

在您回击之前,通过调用 finish() 清除堆栈并终止您当前的活动。对于生成的新实例,请使用布尔值检查当前是否正在播放歌曲。

   if( isSongPlaying==true)
     {
        //do not start  
      }
   else
     {
      //start playing
      }
于 2013-06-24T09:00:56.913 回答