簡體   English   中英

啟動服務播放背景音樂時出錯

[英]Starting a Service to play background music is getting errors

我正在嘗試在Android應用程序中運行背景音樂 ,但出現錯誤

如果我的問題格式有誤,請糾正我

如何解決這個問題呢 ?

我有一個主要活動MainActivity

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent svc=new Intent(this, BackgroundMusic.class);
        startService(svc);
}

在服務活動BackgroundMusic中

package com.example.tttgame;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

public class BackgroundMusic extends Service {
    private static final String TAG = null;
    MediaPlayer player;
    public IBinder onBind(Intent arg0) {

    return null;
}
@Override
public void onCreate() {
    super.onCreate();
    player = MediaPlayer.create(this, R.raw.music);
    player.setLooping(true); // Set looping
    player.setVolume(100,100);

}
public int onStartCommand(Intent intent, int flags, int startId) {
    player.start();
    return 1;
}

public void onStart(Intent intent, int startId) {
    // TO DO
}
public IBinder onUnBind(Intent arg0) {
    // TO DO Auto-generated method
    return null;
}

public void onStop() {

}
public void onPause() {

}
@Override
public void onDestroy() {
    player.stop();
    player.release();
}

@Override
public void onLowMemory() {

}

}

在AndroidManifiedt中:

    <activity
        android:name="com.example.tttgame.BoardActivity"
        android:label="@string/app_name" >
    </activity>
    <service android:enabled="true" android:name="com.example.tttgame.BackgroundMusic" />

</application>

我的錯誤訊息:

09-03 21:45:20.387: E/MainActivity(1392): starting Main Activity ..
09-03 21:45:22.077: E/MainActivity(1392): checking if key 'flag' exists in preferences..
09-03 21:45:22.377: E/MediaPlayer(1392): Should have subtitle controller already set
09-03 21:45:22.797: E/MediaPlayer(1392): error (1, -2147483648)
09-03 21:45:22.837: E/AndroidRuntime(1392): FATAL EXCEPTION: main
09-03 21:45:22.837: E/AndroidRuntime(1392): Process: com.example.tttgame, PID: 1392
09-03 21:45:22.837: E/AndroidRuntime(1392): java.lang.RuntimeException: Unable to create service com.example.tttgame.BackgroundMusic: java.lang.NullPointerException
09-03 21:45:22.837: E/AndroidRuntime(1392):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2563)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at android.app.ActivityThread.access$1700(ActivityThread.java:135)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1479)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at android.os.Handler.dispatchMessage(Handler.java:102)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at android.os.Looper.loop(Looper.java:137)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at android.app.ActivityThread.main(ActivityThread.java:4998)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at java.lang.reflect.Method.invokeNative(Native Method)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at java.lang.reflect.Method.invoke(Method.java:515)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at dalvik.system.NativeStart.main(Native Method)
09-03 21:45:22.837: E/AndroidRuntime(1392): Caused by: java.lang.NullPointerException
09-03 21:45:22.837: E/AndroidRuntime(1392):     at com.example.tttgame.BackgroundMusic.onCreate(BackgroundMusic.java:21)
09-03 21:45:22.837: E/AndroidRuntime(1392):     at android.app.ActivityThread.handleCreateService(ActivityThread.java:2553)
09-03 21:45:22.837: E/AndroidRuntime(1392):     ... 10 more
player = MediaPlayer.create(this, R.raw.music);

我認為這是問題所在,因為錯誤是java.lang.NullPointerException

查看我的班級是否有聲音,並以此為參考。

public class SoundService extends Service {

private static MediaPlayer player;

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onStart(Intent intent, int startId) {

    try {
        if (player != null) {
            player.stop();
            player.release();
            player= null;
        }

        player = MediaPlayer.create(this, R.raw.background);
        player.setLooping(true);
        player.start();
    } catch (Exception e) {
    }
}

public static boolean isMediaPlaying() {
    if (player != null) {
        try {
            return player.isPlaying();
        } catch (Exception e) {
        }
    }

    return false;
}

@Override
public void onDestroy() {
    if (player!= null) {
        player.stop();
        player.release();
        player = null;
    }

    super.onDestroy();
}

}

我已經在onStart中實現了mediaplayer(如果已經存在)。 無需使用onstart命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM