2013-04-13 43 views
3

即時通訊新的Android和im試圖做一個非常簡單的應用程序。它只是一個包含用於播放音頻或視頻文件的MediaPlayer的活動。 我設法播放一首歌,但它不會讓我看到媒體播放器的控制元素!沒有媒體播放器中的控制按鈕顯示

這裏是我使用的代碼:

'公共類播放器擴展活動實現OnPreparedListener, MediaPlayerControl {

private static final String TAG = "AudioPlayer"; 
public static final String AUDIO_FILE_NAME = "audioFileName"; 

private String audioFile; 
private MediaPlayer mediaPlayer; 
private Handler handler = new Handler(); 
private MediaController mediaController; 

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



    Uri myUri = Uri.parse("android.resource://com.example.mediaplayer/" 
      + R.raw.lied); // initialize Uri here 
    MediaPlayer mediaPlayer = new MediaPlayer(); 

    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    mediaController = new MediaController(this); 
    try { 
     mediaPlayer.setDataSource(getApplicationContext(), myUri); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SecurityException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    try { 
     mediaPlayer.prepare(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    mediaPlayer.start(); 

} 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.player, menu); 
    return true; 
} 

public void onPrepared(MediaPlayer mediaPlayer) { 
    Log.d(TAG, "onPrepared"); 
    mediaController.setMediaPlayer(this); 
    mediaController.setAnchorView(findViewById(R.id.mediaController1)); 

    handler.post(new Runnable() { 
     public void run() { 
      mediaController.setEnabled(true); 
      mediaController.show(); 
     } 
    }); 
} 

protected void onStop() { 
    super.onStop(); 
    mediaPlayer.stop(); 
    mediaPlayer.release(); 
} 

public boolean onTouchEvent(MotionEvent event) { 
    // the MediaController will hide after 3 seconds - tap the screen to 
    // make it appear again 
    mediaController.show(); 
    return false; 
} 

public boolean canPause() { 

    return true; 
} 

public boolean canSeekBackward() { 

    return true; 
} 

public boolean canSeekForward() { 

    return true; 
} 

public int getBufferPercentage() { 

    return 0; 
} 

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

public int getDuration() { 
    return mediaPlayer.getDuration(); 

} 

public boolean isPlaying() { 
    return mediaPlayer.isPlaying(); 

} 

public void pause() { 
    mediaPlayer.pause(); 

} 

public void seekTo(int i) { 
    mediaPlayer.seekTo(i); 

} 

public void start() { 
    mediaPlayer.start(); 

} 

}`

這裏是我的佈局XML:

`

<MediaController 
    android:id="@+id/mediaController1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="122dp" 
    android:layout_marginTop="55dp" 
    android:visibility="visible" > 

</MediaController> 

<VideoView 
    android:id="@+id/videoView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" /> 

`

希望你能幫助我: -/

回答

2

我覺得你想找的是Android的一個videoview。播放媒體時,它具有默認控件。

在XML佈局文件夾中創建一個videoview這樣的:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
<VideoView 
    android:id="@+id/myvideoview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 

可以說,你們說那是main.xml文件

現在創建一個名爲MediaViewerTest.java這樣一個活動:

public class MediaViewerTest extends Activity { 

String SrcPath = http://myMediaFile.mp3"; // or however your getting your media source, im assuming web here 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     VideoView myVideoView = (VideoView)findViewById(R.id.myvideoview); 
     myVideoView.setVideoURI(Uri.parse(SrcPath)); 
     myVideoView.setMediaController(new MediaController(this)); 
     myVideoView.requestFocus(); 
     myVideoView.start(); 
    } 
} 
+0

它不能播放MP3的...虐待嘗試與視頻,讓你知道它是否工作 – user2277099

+0

它總是說「不能播放這個視頻」 我不知道最新錯了,我試過mp3和mp4。 即時通訊使用模擬器進行測試,如果這很重要! – user2277099

相關問題