2017-01-20 15 views
0

私はAndroidで音楽プレーヤーアプリを作成していますが、MediaPlayerをサービスとして設定して、すべてのアクティビティ/フラグメントにわたって持続するようにしています。サービスコード:サービスAndroidでオブジェクト参照を設定する

public class PlayerService extends Service { 

MediaPlayer mediaPlayer; 

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

@Override 
public void onCreate() { 
    mediaPlayer = new MediaPlayer(); 

} 

public void LoadUrl(String url){ 

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    try { 
     mediaPlayer.setDataSource(url); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try { 
     mediaPlayer.prepare(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    //mediaPlayer.start(); 
    Play(mediaPlayer); 
} 

public void Play(MediaPlayer player) { 
    player.start(); 
} 

public void Pause(MediaPlayer player) { 
    player.pause(); 
} 

}

とMainActivity:

public class MainActivity extends AppCompatActivity { 

PlayerService playerService; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    if(savedInstanceState != null){ 

    } else { 

     playerService = new PlayerService(); 
     Intent startPlayer = new Intent(this, PlayerService.class); 
     startService(startPlayer); 

    .... 

MainActivityが開始されると、私はとのMediaPlayerにURLをロードしようとすると、それは、しかし、サービスを起動します:

playerService.LoadUrl(feedItem.getAudioUrl()); 

サービスのmediaPlayerがnullであるという例外があります。 mediaPlayerが保持されていることを確認するにはどうすればよいですか?

+0

あなたは再生と一時停止で引数としてメディアプレーヤーを渡す必要はありません... –

答えて

0

startServiceを使用してサービスを開始しようとしていますが、サービスを開始していないstartStartCommandはサービスを開始しません。あなたのメディアプレーヤーは初期化されません

関連する問題