2016-01-22 10 views
5

Ich habe eine XML-Datei in meinem Server erstellt. Es enthält title und link Tags. Ich hole die Tags und zeige sie als Links in ListView. Von dort aus, wenn der Benutzer auf den Link klickt, möchte ich die .pls Datei in der Radio Station App abspielen.Wie Online-Radio-Streaming-URL in Android zu spielen. Wie zu spielen. Pls Radio Streaming-URL in Android

Hier ist meine XML-Datei:

<item> 
    <title> Kushi FM </title> 
    <link>http://108.163.197.114:8071/listen.pls</link> 
</item> 

Ich weiß nicht, wie Sie den Link in der nächsten Aktivität zu spielen.

MainActivity:

public class MainActivity extends AppCompatActivity { 
    // All static variables 
    static final String URL1 = "http://servernmae.com/stations"; 
    // XML node keys 
    static final String KEY_ITEM = "item"; // parent node 
    static final String KEY_TITLE = "title"; 
    static final String KEY_LINK = "link"; 
    URL url; 

    URLConnection urlConnection; 
    //Context context; 
    ListView listview; 
    int images=R.drawable.radio; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // isNetworkAvailable(this); 

     listview = (ListView) findViewById(R.id.list); 

     if(isNetworkAvailable(this)) 
     { 
      new GetData().execute(); 

     }else { 
      Toast.makeText(getApplicationContext(), "Please Connect to Internet and Check Again ! Thanks)", 
        Toast.LENGTH_LONG).show(); 
     } 



    } 
    private boolean isNetworkAvailable(Context context) { 
     ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) { 
       for (int i = 0; i < info.length; i++) { 
        Log.w("INTERNET:",String.valueOf(i)); 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
         Log.w("INTERNET:", "connected!"); 
         return true; 
        } 
       } 
      } 
     } 
     return false; 
    } 

    class GetData extends AsyncTask<String, String, String> { 
     String xml = "error"; 

     @Override 
     protected String doInBackground(String... params) { 

      try { 
       url = new URL(URL1); 

       urlConnection = (HttpURLConnection) url.openConnection(); 

       InputStream in = urlConnection.getInputStream(); 

       InputStreamReader isw = new InputStreamReader(in); 

       BufferedReader br = new BufferedReader(isw); 
       StringBuilder sb = new StringBuilder(); 
       String line; 
       while ((line = br.readLine()) != null) { 
        sb.append(line + "\n"); 
       } 
       br.close(); 

       xml = sb.toString(); 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 


      return xml; 
     } 


     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 

      final ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>(); 
      ArrayList<String> title= new ArrayList<>(); 
      //title.add(""); 

      Document doc = null; 
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      try { 

       DocumentBuilder db = dbf.newDocumentBuilder(); 

       InputSource is = new InputSource(); 
       is.setCharacterStream(new StringReader(xml)); 
       doc = db.parse(is); 


       NodeList nl = doc.getElementsByTagName(KEY_ITEM); 
       for (int i = 0; i < nl.getLength(); i++) { 
        HashMap<String, String> map = new HashMap<String, String>(); 
        Element e = (Element) nl.item(i); 
        Log.e("TAg1", getValue(e, KEY_TITLE)); 
        //Log.e("TAg2", getValue(e, KEY_LINK)); 
        map.put(KEY_TITLE, getValue(e, KEY_TITLE)); 
        map.put(KEY_LINK, getValue(e, KEY_LINK)); 
        menuItems.add(map); 

        title.add(getValue(e, KEY_TITLE)); 
       } 


      } catch (ParserConfigurationException e) { 
       Log.e("Error: ", e.getMessage()); 
      } catch (SAXException e) { 
       Log.e("Error: ", e.getMessage()); 
      } catch (IOException e) { 
       Log.e("Error: ", e.getMessage()); 

      } 
      String[] dataArr = new String[title.size()]; 
      dataArr = title.toArray(dataArr); 
      CustomAdapter adapter = new CustomAdapter(getApplicationContext(), dataArr); 
      listview.setAdapter(adapter); 
      listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
       @Override 
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
        //HashMap<String, String> selectedMap = menuItems.get(position); 
        HashMap<String,String> selectedMap= menuItems.get(position); 
        String urls = selectedMap.get(KEY_LINK); 
        Intent intent = new Intent(MainActivity.this, Service_Player.class); 
        intent.putExtra("url",urls); 
        startActivity(intent); 

       } 

      }); 




     } 

     public final String getElementValue(Node elem) { 
      Node child; 
      if (elem != null) { 
       if (elem.hasChildNodes()) { 
        for (child = elem.getFirstChild(); child != null; child = child.getNextSibling()) { 
         if (child.getNodeType() == Node.TEXT_NODE) { 
          return child.getNodeValue(); 
         } 
        } 
       } 
      } 
      return ""; 
     } 

     public String getValue(Element item, String str) { 
      NodeList n = item.getElementsByTagName(str); 
      return this.getElementValue(n.item(0)); 
     } 


    } 

Service_player.java

public class Service_Player extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_service__player); 
     startService(new Intent(this, MediaPlayerService.class)); 
     String url = getIntent().getStringExtra("url"); 
     if (!TextUtils.isEmpty(url)) 
      startMediaPlayer(url); 


    } 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     registerReceiver(receiverFromservice, new IntentFilter(MediaPlayerService.SERVICE_TO_ACTIVITY)); 
    } 

    private String currentPlayerStatus = "N/A"; 
    private BroadcastReceiver receiverFromservice = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      if (MediaPlayerService.SERVICE_TO_ACTIVITY.equalsIgnoreCase(action)) { 
       /* 
       * To get current status of player 
       * */ 
       currentPlayerStatus = intent.getStringExtra(MediaPlayerService.PLAYER_STATUS_KEY); 
       Log.e("Player Mode", "" + currentPlayerStatus); 
      } 
     } 
    }; 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     unregisterReceiver(receiverFromservice); 
    } 
    public void startMediaPlayer(String url) { 
     Intent intent = new Intent(); 
     intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); 
     intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PLAY_MEDIA_PLAYER); 
     intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, url); 
     sendBroadcast(intent); 
} 

MediaPlayerService.java

public class MediaPlayerService extends Service { 

    public static final String BROADCAST_TO_SERVICE = "com.mediaplayer.playerfunction"; 
    public static final String SERVICE_TO_ACTIVITY = "com.mediaplayer.currentPlayerStatus"; 
    public static final String PLAYER_FUNCTION_TYPE = "playerfunction"; 
    public static final String PLAYER_TRACK_URL = "trackURL"; 
    public static final int PLAY_MEDIA_PLAYER = 1; 
    public static final int PAUSE_MEDIA_PLAYER = 2; 
    public static final int RESUME_MEDIA_PLAYER = 3; 
    public static final int STOP_MEDIA_PLAYER = 4; 
    public static final int CHANGE_PLAYER_TRACK = 5; 
    public static final String PLAYER_STATUS_KEY = "PlayerCurrentStatus"; 
    @Nullable 
    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 
    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     IntentFilter intentFilter = new IntentFilter(BROADCAST_TO_SERVICE); 
     registerReceiver(playerReceiver, intentFilter); 
     if (mPlayer != null && mPlayer.isPlaying()) { 
      sendPlayerStatus("playing"); 
     } 
     return START_STICKY; 
    } 

    private BroadcastReceiver playerReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      if (BROADCAST_TO_SERVICE.equalsIgnoreCase(action)) { 
       String trackURL = intent.hasExtra(PLAYER_TRACK_URL) ? intent.getStringExtra(PLAYER_TRACK_URL) : ""; 
       int function = intent.getIntExtra(PLAYER_FUNCTION_TYPE, 0); 
       switch (function) { 
        case CHANGE_PLAYER_TRACK: 
         changeTrack(trackURL); 
         break; 
        case STOP_MEDIA_PLAYER: 
         stopPlayer(); 
         break; 
        case PLAY_MEDIA_PLAYER: 
         startMediaPlayer(trackURL); 
         break; 
        case PAUSE_MEDIA_PLAYER: 
         pausePlayer(); 
         break; 
        case RESUME_MEDIA_PLAYER: 
         resumePlayer(); 
         break; 
       } 

      } 
     } 
    }; 
    private MediaPlayer mPlayer; 

    private void pausePlayer() { 
     if (mPlayer != null && mPlayer.isPlaying()) { 
      mPlayer.pause(); 
      sendPlayerStatus("pause"); 
     } 
    } 

    private void resumePlayer() { 
     if (mPlayer != null && !mPlayer.isPlaying()) { 
      mPlayer.start(); 
      sendPlayerStatus("playing"); 
     } 
    } 

    private void changeTrack(String url) { 
     stopPlayer(); 
     startMediaPlayer(url); 

    } 

    private void stopPlayer() { 
     if (mPlayer != null) { 
      mPlayer.stop(); 
      mPlayer.release(); 
      mPlayer = null; 
      sendPlayerStatus("stopped"); 

     } 
    } 

    public void startMediaPlayer(String url) { 
     if (TextUtils.isEmpty(url)) 
      return; 
     if (mPlayer == null) 
      mPlayer = new MediaPlayer(); 
     try { 
      mPlayer.setDataSource(url); 
      mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { 

       @Override 
       public boolean onError(MediaPlayer mp, int what, int extra) { 
        if (extra == MediaPlayer.MEDIA_ERROR_SERVER_DIED 
          || extra == MediaPlayer.MEDIA_ERROR_MALFORMED) { 
         sendPlayerStatus("erroronplaying"); 
        } else if (extra == MediaPlayer.MEDIA_ERROR_IO) { 
         sendPlayerStatus("erroronplaying"); 
         return false; 
        } 
        return false; 
       } 
      }); 
      mPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() { 

       public void onBufferingUpdate(MediaPlayer mp, int percent) { 
        Log.e("onBufferingUpdate", "" + percent); 

       } 
      }); 
      mPlayer.prepareAsync(); 
      mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 

       public void onPrepared(MediaPlayer mp) { 
        mPlayer.start(); 
        sendPlayerStatus("playing"); 
       } 
      }); 
      mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

       @Override 
       public void onCompletion(MediaPlayer mp) { 
        Log.e("onCompletion", "Yes"); 
        sendPlayerStatus("completed"); 
       } 
      }); 
      mPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() { 
       @Override 
       public boolean onInfo(MediaPlayer mp, int what, int extra) { 
        return false; 
       } 
      }); 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    private void sendPlayerStatus(String status) { 
     Intent intent = new Intent(); 
     intent.setAction(SERVICE_TO_ACTIVITY); 
     intent.putExtra(PLAYER_STATUS_KEY, status); 
     sendBroadcast(intent); 
    } 

Manifest.xml

<!-- Internet Permissions --> 
    <uses-permission android:name="android.permission.INTERNET" /> 

    <!-- Network State Permissions --> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      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=".Service_Player" 
      android:label="@string/title_activity_service__player" > 
     </activity> 
     <service android:name=".MediaPlayerService"></service> 
    </application> 

Antwort

0
MediaPlayer mp; 
mp=MediaPlayer.create(getApplicationContext(),Uri.parse(url)) 
//Example url of .pls file http://50.xx.xxx.xx:xx40/) 

mp.start(); 
mp.pause(); 
mp.release() (or mp.reset() as applicable) 
3

Ich werde vorschlagen, dass Sie Service verwenden, wenn Sie App mit Mediaplayer-Streaming oder normalen Mediaplayer zu schaffen sind. Es wird einfach sein, Spielerhintergrund & zentral zu behandeln.

Um Media-Player in Service nutzen Sie es mit BroadCastReceiver oder Bound-Service wie pro Ihre requirement.It wäre gut verwenden können, wenn Mediaplayer-Service verbunden, wenn Sie es halten running in foreground hier in folgenden Code, den ich nicht für haben Griff Bitte überprüfen Sie den angegebenen Link.

Hier im Beispielcode habe ich BroadCast Receiver verwendet, um Befehl von Aktivität zu Service für MediaPlayer zu senden (wie Wiedergabe, Pause, Spur ändern usw.) und umgekehrt.

Jetzt, um URL zu erhalten, die Sie von Aktivität OnItemClickListner senden, müssen Sie von Intent abrufen.

String url = getIntent().getStringExtra("url"); 

PlayerScreen

public class PlayerScreen extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.player); 
     startService(new Intent(this, MediaPlayerService.class)); 
     findViewById(R.id.btnChangeTrack).setOnClickListener(clickListener); 
     findViewById(R.id.btnStartMediaPlayer).setOnClickListener(clickListener); 
     findViewById(R.id.btnStopMediaPlayer).setOnClickListener(clickListener); 
     ToggleButton toggleButton = (ToggleButton) findViewById(R.id.togglePauseResume); 
     toggleButton.setOnCheckedChangeListener(checkedChangeListener); 
     /* 
     * To get url which is passing from the previous activity listitem click. 
     * If url which is pass from listitem click is not empty it will start player 
     * */ 
     String url = getIntent().getStringExtra("url"); 
     if (!TextUtils.isEmpty(url)) 
      startMediaPlayer(url); 

    } 

    private ToggleButton.OnCheckedChangeListener checkedChangeListener = new ToggleButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      if (!isChecked) { 
       Intent intent = new Intent(); 
       intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); 
       intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PAUSE_MEDIA_PLAYER); 
       sendBroadcast(intent); 
      } else { 
       Intent intent = new Intent(); 
       intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); 
       intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.RESUME_MEDIA_PLAYER); 
       sendBroadcast(intent); 
      } 
     } 
    }; 
    private View.OnClickListener clickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent; 
      switch (v.getId()) { 
       case R.id.btnChangeTrack: 
        intent = new Intent(); 
        intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); 
        intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.CHANGE_PLAYER_TRACK); 
        intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, "http://69.64.41.64:9938"); 
        sendBroadcast(intent); 
        break; 
       case R.id.btnStartMediaPlayer: 
        startMediaPlayer("http://108.163.197.114:8071/listen.pls"); 
        break; 
       case R.id.btnStopMediaPlayer: 
        intent = new Intent(); 
        intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); 
        intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.STOP_MEDIA_PLAYER); 
        sendBroadcast(intent); 
        break; 

      } 
     } 
    }; 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     registerReceiver(receiverFromservice, new IntentFilter(MediaPlayerService.SERVICE_TO_ACTIVITY)); 
    } 

    private String currentPlayerStatus = "N/A"; 
    private BroadcastReceiver receiverFromservice = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      if (MediaPlayerService.SERVICE_TO_ACTIVITY.equalsIgnoreCase(action)) { 
       /* 
       * To get current status of player 
       * */ 
       currentPlayerStatus = intent.getStringExtra(MediaPlayerService.PLAYER_STATUS_KEY); 
       Log.e("Player Mode", "" + currentPlayerStatus); 
      } 
     } 
    }; 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     unregisterReceiver(receiverFromservice); 
    } 

    /** 
    * TO start media player.It will send broadcast to Service & from service player will start 
    * 
    * @param url 
    */ 
    public void startMediaPlayer(String url) { 
     Intent intent = new Intent(); 
     intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); 
     intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PLAY_MEDIA_PLAYER); 
     intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, url); 
     sendBroadcast(intent); 
    } 
} 

MediaPlayerService

public class MediaPlayerService extends Service { 
    public static final String BROADCAST_TO_SERVICE = "com.mediaplayer.playerfunction"; 
    public static final String SERVICE_TO_ACTIVITY = "com.mediaplayer.currentPlayerStatus"; 
    public static final String PLAYER_FUNCTION_TYPE = "playerfunction"; 
    public static final String PLAYER_TRACK_URL = "trackURL"; 
    public static final int PLAY_MEDIA_PLAYER = 1; 
    public static final int PAUSE_MEDIA_PLAYER = 2; 
    public static final int RESUME_MEDIA_PLAYER = 3; 
    public static final int STOP_MEDIA_PLAYER = 4; 
    public static final int CHANGE_PLAYER_TRACK = 5; 
    public static final String PLAYER_STATUS_KEY = "PlayerCurrentStatus"; 

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

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     IntentFilter intentFilter = new IntentFilter(BROADCAST_TO_SERVICE); 
     registerReceiver(playerReceiver, intentFilter); 
     if (mPlayer != null && mPlayer.isPlaying()) { 
      sendPlayerStatus("playing"); 
     } 
     return START_STICKY; 
    } 

    private BroadcastReceiver playerReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      if (BROADCAST_TO_SERVICE.equalsIgnoreCase(action)) { 
       String trackURL = intent.hasExtra(PLAYER_TRACK_URL) ? intent.getStringExtra(PLAYER_TRACK_URL) : ""; 
       int function = intent.getIntExtra(PLAYER_FUNCTION_TYPE, 0); 
       switch (function) { 
        case CHANGE_PLAYER_TRACK: 
         changeTrack(trackURL); 
         break; 
        case STOP_MEDIA_PLAYER: 
         stopPlayer(); 
         break; 
        case PLAY_MEDIA_PLAYER: 
         startMediaPlayer(trackURL); 
         break; 
        case PAUSE_MEDIA_PLAYER: 
         pausePlayer(); 
         break; 
        case RESUME_MEDIA_PLAYER: 
         resumePlayer(); 
         break; 
       } 

      } 
     } 
    }; 
    private MediaPlayer mPlayer; 

    private void pausePlayer() { 
     if (mPlayer != null && mPlayer.isPlaying()) { 
      mPlayer.pause(); 
      sendPlayerStatus("pause"); 
     } 
    } 

    private void resumePlayer() { 
     if (mPlayer != null && !mPlayer.isPlaying()) { 
      mPlayer.start(); 
      sendPlayerStatus("playing"); 
     } 
    } 

    private void changeTrack(String url) { 
     stopPlayer(); 
     startMediaPlayer(url); 

    } 

    private void stopPlayer() { 
     if (mPlayer != null) { 
      mPlayer.stop(); 
      mPlayer.release(); 
      mPlayer = null; 
      sendPlayerStatus("stopped"); 

     } 
    } 

    public void startMediaPlayer(String url) { 
     if (TextUtils.isEmpty(url)) 
      return; 
     if (mPlayer == null) 
      mPlayer = new MediaPlayer(); 
     try { 
      mPlayer.setDataSource(url); 
      mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { 

       @Override 
       public boolean onError(MediaPlayer mp, int what, int extra) { 
        if (extra == MediaPlayer.MEDIA_ERROR_SERVER_DIED 
          || extra == MediaPlayer.MEDIA_ERROR_MALFORMED) { 
         sendPlayerStatus("erroronplaying"); 
        } else if (extra == MediaPlayer.MEDIA_ERROR_IO) { 
         sendPlayerStatus("erroronplaying"); 
         return false; 
        } 
        return false; 
       } 
      }); 
      mPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() { 

       public void onBufferingUpdate(MediaPlayer mp, int percent) { 
        Log.e("onBufferingUpdate", "" + percent); 

       } 
      }); 
      mPlayer.prepareAsync(); 
      mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 

       public void onPrepared(MediaPlayer mp) { 
        mPlayer.start(); 
        sendPlayerStatus("playing"); 
       } 
      }); 
      mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

       @Override 
       public void onCompletion(MediaPlayer mp) { 
        Log.e("onCompletion", "Yes"); 
        sendPlayerStatus("completed"); 
       } 
      }); 
      mPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() { 
       @Override 
       public boolean onInfo(MediaPlayer mp, int what, int extra) { 
        return false; 
       } 
      }); 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    private void sendPlayerStatus(String status) { 
     Intent intent = new Intent(); 
     intent.setAction(SERVICE_TO_ACTIVITY); 
     intent.putExtra(PLAYER_STATUS_KEY, status); 
     sendBroadcast(intent); 
    } 
} 

Spieler.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TextView 
     android:id="@+id/section_label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/ab_tool" 
     android:text="Home" /> 

    <Button 
     android:id="@+id/btnStartMediaPlayer" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/section_label" 
     android:text="Start Player" /> 


    <ToggleButton 
     android:id="@+id/togglePauseResume" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/btnStartMediaPlayer" 
     android:checked="true" 
     android:textOff="Resume" 
     android:textOn="Pause" /> 

    <Button 
     android:id="@+id/btnChangeTrack" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/togglePauseResume" 
     android:text="Chanage Track" /> 

    <Button 
     android:id="@+id/btnStopMediaPlayer" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/btnChangeTrack" 
     android:text="STOP" /> 
</RelativeLayout> 

Manifest

<activity android:name=".PlayerScreen"> 

    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 


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

Daten Um von Streaming-Daten-URL-Header Sie können check this answer

Für Testzwecke hier habe ich zwei URLs verwendet

UPDATE PlayerActivity

public class PlayerScreen extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.player); 
     startService(new Intent(this, MediaPlayerService.class)); 
     /* 
     * To get url which is passing from the previous activity listitem click. 
     * If url which is pass from listitem click is not empty it will start player 
     * */ 
     String url = getIntent().getStringExtra("url"); 
     if (!TextUtils.isEmpty(url)) 
      startMediaPlayer(url); 

    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     registerReceiver(receiverFromservice, new IntentFilter(MediaPlayerService.SERVICE_TO_ACTIVITY)); 
    } 

    private String currentPlayerStatus = "N/A"; 
    private BroadcastReceiver receiverFromservice = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      if (MediaPlayerService.SERVICE_TO_ACTIVITY.equalsIgnoreCase(action)) { 
       /* 
       * To get current status of player 
       * */ 
       currentPlayerStatus = intent.getStringExtra(MediaPlayerService.PLAYER_STATUS_KEY); 
       Log.e("Player Mode", "" + currentPlayerStatus); 
      } 
     } 
    }; 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     unregisterReceiver(receiverFromservice); 
    } 

    /** 
    * TO start media player.It will send broadcast to Service & from service player will start 
    * 
    * @param url 
    */ 
    public void startMediaPlayer(String url) { 
     Intent intent = new Intent(); 
     intent.setAction(MediaPlayerService.BROADCAST_TO_SERVICE); 
     intent.putExtra(MediaPlayerService.PLAYER_FUNCTION_TYPE, MediaPlayerService.PLAY_MEDIA_PLAYER); 
     intent.putExtra(MediaPlayerService.PLAYER_TRACK_URL, url); 
     sendBroadcast(intent); 
    } 
} 

lassen Sie mich wissen, wenn etwas.

+0

Danke aber, wenn Benutzer den Fm Namen in Listview klicken Die nächste Aktivität wird automatisch spielen Wie können wir es tun ??? – vasanth

+0

Hier ist der Code, den ich in NextActivity schreibe, ist das richtig? Absicht intent = getIntent(); final String selectedData = intent.getStringExtra ("url"); fmname.setText (ausgewählteDaten); mMediaPlayer = neuer MediaPlayer(); versuchen { mMediaPlayer.setDataSource (selectedData); mMediaPlayer.prepareAsync(); mMediaPlayer.setOnPreparedListener (neu MediaPlayer.OnPreparedListener() { public void onPrepared (Mediaplayer mp) { mMediaPlayer.start();} }); – vasanth

+0

'Player' Aktivität von meiner Antwort wird Ihr' Service_Player' in 'Player' Aktivität' onCreate' Methode wird es Url Daten von Intent holen und seine Aufruf 'startMediaPlayer' Methode, die Spieler starten – user1140237

Verwandte Themen