2010-06-02 11 views
18

मैं अपने ऐप में ऑडियो स्ट्रीमिंग के लिए प्ले/पॉज़ जैसे मीडिया नियंत्रण चाहता हूं। मैं ऑडियो स्ट्रीम करने और चलाने के लिए मीडियाप्लेयर का उपयोग कर रहा हूं।MediaPlayer के साथ MediaController

क्या कोई MediaPlayer के साथ MediaController का उपयोग करने के तरीके पर कोड स्निपेट प्रदान कर सकता है?

धन्यवाद क्रिस

उत्तर

12

के रूप में आसान इस कोड here से निकाले के रूप में। वे एक MediaPlayer, जो आप कोड की कुछ लाइनें बचाता है के बजाय VideoView का उपयोग करें:

लेआउट:

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

<LinearLayout android:id="@+id/LinearLayout01" 
    android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" 
    android:paddingLeft="2px" android:paddingRight="2px" 
    android:paddingTop="2px" android:paddingBottom="2px" 
    android:layout_width="fill_parent" android:orientation="vertical"> 

    <VideoView android:layout_height="fill_parent" 
     android:layout_width="fill_parent" android:id="@+id/VideoView"></VideoView> 

</LinearLayout> 

और कोड:

public class VideoPlayerController extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.video); 

     VideoView videoView = (VideoView) findViewById(R.id.VideoView); 
     MediaController mediaController = new MediaController(this); 
     mediaController.setAnchorView(videoView); 
// Set video link (mp4 format) 
     Uri video = Uri.parse("mp4 video link"); 
     videoView.setMediaController(mediaController); 
     videoView.setVideoURI(video); 
     videoView.start(); 

    } 
} 

सब है कि। स्ट्रीमिंग वीडियो यूआरएल के साथ बस mp4 video link को प्रतिस्थापित करें।

+7

उपयोग VideoView से एपीआई क़ौम से कोड का उपयोग कर रहा ??? – Chris

+0

क्या मैं इसका उपयोग आरटीएसपी वीडियो स्ट्रीम करने के लिए कर सकता हूं? – vrunoa

43

यह एक मीडिया प्लेयर में मीडिया नियंत्रक जोड़ने के लिए काफी आसान है। अपनी गतिविधि को MediaPlayerControl को लागू करें और अनुपूरक विधियां जोड़ें। कोड के रूप में नीचे है:

मैं यहाँ http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.html

public class ActivityVedioPlay extends Activity implements 
     OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener, 
     OnVideoSizeChangedListener, SurfaceHolder.Callback, MediaPlayerControl { 
..... 

    private MediaPlayer mMediaPlayer; 
    private MediaController mcontroller; 
    private Handler handler = new Handler(); 
..... 
@Override 
    public boolean onTouchEvent(MotionEvent event) { 
     /* 
     * the MediaController will hide after 3 seconds - tap the screen to 
     * make it appear again 
     */ 
     mcontroller.show(); 
     return false; 
    } 
...... 
private void playVideo() { 
     doCleanUp(); 
     try { 
      path = getIntent().getStringExtra("url"); 
      if (path == "") { 
       Toast.makeText(ActivityVedioPlay.this, "URL Not found", 
         Toast.LENGTH_LONG).show(); 
      } 
      mMediaPlayer = new MediaPlayer(); 
      mMediaPlayer.setDataSource(path); 
      mMediaPlayer.setDisplay(holder); 
      mMediaPlayer.prepare(); 
      mMediaPlayer.setOnBufferingUpdateListener(this); 
      mMediaPlayer.setOnCompletionListener(this); 
      mMediaPlayer.setOnPreparedListener(this); 
      mMediaPlayer.setScreenOnWhilePlaying(true); 
      mMediaPlayer.setOnVideoSizeChangedListener(this); 
      mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
      mcontroller = new MediaController(this); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
...... 

public void onPrepared(MediaPlayer mediaplayer) { 
     Log.d(TAG, "onPrepared called"); 
     mIsVideoReadyToBePlayed = true; 
     if (mIsVideoReadyToBePlayed && mIsVideoSizeKnown) { 
      startVideoPlayback(); 
     } 
     mcontroller.setMediaPlayer(this); 
     mcontroller.setAnchorView(findViewById(R.id.mediaplayer_surfaceview_container)); 
     handler.post(new Runnable() { 

      public void run() { 
       mcontroller.setEnabled(true); 
       mcontroller.show(); 
      } 
     }); 
    } 

//mediacontroller implemented methods 

    public void start() { 
     mMediaPlayer.start(); 
    } 

    public void pause() { 
     mMediaPlayer.pause(); 
    } 

    public int getDuration() { 
     return mMediaPlayer.getDuration(); 
    } 

    public int getCurrentPosition() { 
     return mMediaPlayer.getCurrentPosition(); 
    } 

    public void seekTo(int i) { 
     mMediaPlayer.seekTo(i); 
    } 

    public boolean isPlaying() { 
     return mMediaPlayer.isPlaying(); 
    } 

    public int getBufferPercentage() { 
     return 0; 
    } 

    public boolean canPause() { 
     return true; 
    } 

    public boolean canSeekBackward() { 
     return true; 
    } 

    public boolean canSeekForward() { 
     return true; 
    } 
ऑडियो के लिए
+1

ऐसा लगता है कि यह विशेष रूप से वीडियो के लिए है जबकि सवाल ऑडियो के बारे में है, फिट के जवाब को संपादित करना अच्छा होगा। –

+0

गंभीरता से, वीडियो दृश्यों के साथ इतने सारे जवाब क्यों हैं। इस सवाल ने वीडियो के बारे में कुछ भी नहीं बताया – grant

संबंधित मुद्दे