2013-04-13 40 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

相关问题