2017-09-22 1 views
0

私はオンラインのストリーミングラジオアンドロイドアプリを開発しました。私のアプリはすべてのステーションで正常に動作していますが、バックグラウンドミュージックに問題があります。私のアプリやモバイル画面のロックを最小限にするか、私のアプリの家に戻ってみようとすると、バックグラウンドミュージックが消える エラーメッセージはありません。私のストリーミングラジオのバックグラウンドミュージックを起動しないアプリ

私はBGMを管理するクラスを持っている

import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.v4.content.ContextCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class Station extends AppCompatActivity { 

    Button b_play; 
    MediaPlayer mediaPlayer; 
    Boolean prepared = false; 
    Boolean started = false; 
    private Button btn; 
    private Boolean playPause; 
    private boolean initialStage = true; 

    Toolbar mtoolbar; 
    ImageView flag; 

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

     mtoolbar = (Toolbar) findViewById(R.id.toolbar1); 

     flag = (ImageView) findViewById(R.id.imageView2); 

     Bundle bundle = getIntent().getExtras(); 
     if (bundle != null) { 
      mtoolbar.setTitle(bundle.getString("Station")); 
      if (mtoolbar.getTitle().toString().equalsIgnoreCase("Gujrat")) { 
       flag.setImageDrawable(ContextCompat.getDrawable(Station.this, 
         R.drawable.favorites1)); 


       String stream = "http://162.244.80.118:4900/;stream.mp3"; 
       btn = (Button) findViewById(R.id.btn); 
       btn.setEnabled(false); 
       btn.setTag("LOADING"); 


       mediaPlayer = new MediaPlayer(); 
       mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
       mediaPlayer.setLooping(true); 


       new PlayerTask().execute(stream); 

       btn.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view){ 
         if(started){ 
          started = false; 
          mediaPlayer.pause(); 

          btn.setText("PLAY"); 
         }else{ 
          started = true; 
          mediaPlayer.start(); 
          btn.setText("PAUSE"); 
         } 


        } 
       }); 


      } else if (mtoolbar.getTitle().toString().equalsIgnoreCase("Lahore")) { 
       flag.setImageDrawable(ContextCompat.getDrawable(Station.this, 
         R.drawable.station)); 

       String stream = "http://162.244.80.118:3058/;stream.mp3"; 
       btn = (Button) findViewById(R.id.btn); 
       btn.setEnabled(false); 
       btn.setTag("LOADING"); 

       mediaPlayer = new MediaPlayer(); 
       mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

       new PlayerTask().execute(stream); 

       btn.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view){ 
         if(started){ 
          started = false; 
          mediaPlayer.pause(); 
          btn.setText("PLAY"); 
         }else{ 
          started = true; 
          mediaPlayer.start(); 
          btn.setText("PAUSE"); 
         } 


        } 
       }); 
      } 
     } 




    } 


    private class PlayerTask extends AsyncTask<String, Void, Boolean> { 

     @Override 
     protected Boolean doInBackground(String... strings) { 
      Boolean prepared = false; 

      try { 
       mediaPlayer.setDataSource(strings[0]); 
       mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        @Override 
        public void onCompletion(MediaPlayer mediaPlayer) { 
         initialStage = true; 
         playPause = false; 
         btn.setText("Launch Streaming"); 
         mediaPlayer.stop(); 
         mediaPlayer.reset(); 
        } 
       }); 

       mediaPlayer.prepare(); 
       prepared = true; 

      } catch (Exception e) { 
       Log.e("MyAudioStreamingApp", e.getMessage()); 
       prepared = false; 
      } 
      return prepared; 
     } 

     @Override 
     protected void onPostExecute(Boolean aBoolean) { 
      super.onPostExecute(aBoolean); 

      btn.setEnabled(true); 
      btn.setTag("PLAY"); 
     } 

    } 


    @Override 
    protected void onPause(){ 
     super.onPause(); 
     if(started){ 
      mediaPlayer.pause(); 
     } 

    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     if (started){ 
      mediaPlayer.start(); 
     } 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     if(prepared){ 
      mediaPlayer.release(); 
     } 
    } 
} 

私のxmlファイルが

<?xml version="1.0" encoding="utf-8"?> 

RelativeLayoutののxmlnsです:アンドロイド= "http://schemas.android.com/apk/res /アンドロイド」

xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
tools:context="com.ukhyips.httpwww.ayanradio.Station"> 

<android.support.v7.widget.Toolbar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/toolbar1" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentTop="true" 
    android:background="@color/colorPrimary" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    /> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" /> 

<Button 
    android:id="@+id/btn" 
    android:layout_width="160dp" 
    android:layout_height="wrap_content" 
    android:text="PLAY" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="14dp" /> 

/RelativeLayout>

ここ

)は、あなたのアプリがonPause(に行くので、私のアプリや携帯電話の画面ロックがオンになっている最小化したとき

<?xml version="1.0" encoding="utf-8"?> 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission-sdk-23 android:name="android.permission.ACCESS_NETWORK_STATE"/> 


<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".Station"></activity> 

    <service android:enabled="true" android:name="Station" /> 
</application> 

+0

新しいPlayerTask()。execute(ストリーム);これをonResumeに追加し、それが動作するのを見ますか? –

+0

あなたはここで言っていますか? @Override protected void onResume(){ super.onResume(); if(開始){ mediaPlayer.start(); } } – Ayan

+0

はい少しチャンスを与えます。 –

答えて

0

背景音楽が消え、私のマニフェストファイルのコードです状態アクティビティのライフサイクル(https://developer.android.com/guide/components/activities/activity-lifecycle.html)を参照してください。バックグラウンドで音楽を再生したい場合は、サービス(https://developer.android.com/guide/components/services.html)を使用して、バックグラウンドでアプリを稼働させ、タスクをバックグラウンドで実行してください。

+0

私のcode.iに従ってserviceとしてコード化できますか? station.javaファイルにすべてのコードを書き込んでください – Ayan

+0

私はあなたにパスを表示できます。今、あなたはこの道を歩かなければなりません。あなたの手を汚し、コードに潜り込み、新しいものを学びましょう。それでもあなたのコードに問題があるなら、自由に助けを求めることができます。 –

関連する問題