我是android编程的新手,现在我的应用遇到了一个问题。我打算编写一个MediaPlayer应用程序,它具有以下功能:使用intent从存储中选择一个文件,然后开始播放该文件。我使用了“mediaPlayer.create(context,uri)”方法,但当前我出现了错误
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//openFile();
Button openFile = (Button) this.findViewById(R.id.ButtonOpen);
openFile.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent chooseFile;
Intent intent;
chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
chooseFile.setType("file/*");
intent = Intent.createChooser(chooseFile, "Choose a file");
startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
Uri uri = intent.getData();
initViews(uri);
}
});
}
private void initViews(Uri uri) {
mButtonPlayStop = (Button) findViewById(R.id.ButtonPlayStop);
mButtonPlayStop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
buttonClick();
}
});
mMediaPlayer = MediaPlayer.create(this, uri);
}
private void starPlayProgressUpdater() {
mSeekBar.setProgress(mMediaPlayer.getCurrentPosition());
if (mMediaPlayer.isPlaying()) {
Runnable notification = new Runnable() {
@Override
public void run() {
starPlayProgressUpdater();
}
};
mHandler.postDelayed(notification, 1000);
} else {
mMediaPlayer.pause();
mButtonPlayStop.setText(getString(R.string.play_str));
mSeekBar.setProgress(0);
}
}
private void buttonClick() {
if (mButtonPlayStop.getText() == getString(R.string.play_str)) {
mButtonPlayStop.setText(getString(R.string.pause_str));
try {
mMediaPlayer.start();
starPlayProgressUpdater();
} catch (IllegalStateException e) {
mMediaPlayer.pause();
}
} else {
mButtonPlayStop.setText(getString(R.string.play_str));
mMediaPlayer.pause();
}
}
并在“MmediaPlayer=MediaPlayer.create(this,uri);”中抛出NullPointerExcepthtml" target="_blank">ion。它的URI有问题。谁能帮我指引一下路吗?
感谢Ilango j,我修改了我的代码,然后现在我可以选择和播放一个音乐文件。但我的期望是选择文件,然后只在单击播放/暂停按钮(带有进度条)后播放,但我用我的buttonClick得到了新的NullPointerException
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = (Context) getApplicationContext();
Button openFile = (Button) this.findViewById(R.id.ButtonOpen);
openFile.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
initView();
}
});
}
private void initView() {
mButtonPlayStop = (Button) findViewById(R.id.ButtonPlayStop);
mButtonPlayStop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
buttonClick();
}
});
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 10);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RESULT_OK && requestCode == 10) {
Uri uri = data.getData();
mMediaPlayer = MediaPlayer.create(mContext, uri);
mSeekBar = (SeekBar) findViewById(R.id.SeekBar01);
mSeekBar.setMax(mMediaPlayer.getDuration());
mSeekBar.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
seekChange(v);
return false;
}
});
}
}
private void starPlayProgressUpdater() {
mSeekBar.setProgress(mMediaPlayer.getCurrentPosition());
if (mMediaPlayer.isPlaying()) {
Runnable notification = new Runnable() {
@Override
public void run() {
starPlayProgressUpdater();
}
};
mHandler.postDelayed(notification, 1000);
} else {
mMediaPlayer.pause();
mButtonPlayStop.setText(getString(R.string.play_str));
mSeekBar.setProgress(0);
}
}
private void seekChange(View v) {
if (mMediaPlayer.isPlaying()) {
SeekBar sb = (SeekBar) v;
mMediaPlayer.seekTo(sb.getProgress());
}
}
private void buttonClick() {
if (mButtonPlayStop.getText().equals(getString(R.string.play_str))) {
mButtonPlayStop.setText(getString(R.string.pause_str));
try {
mMediaPlayer.start();
starPlayProgressUpdater();
} catch (IllegalStateException e) {
mMediaPlayer.pause();
}
} else {
mButtonPlayStop.setText(getString(R.string.play_str));
mMediaPlayer.pause();
}
}
你能给个建议吗?
首先启动activity从sd卡中提取媒体文件。替换以下代码
Button openFile = (Button) this.findViewById(R.id.ButtonOpen);
openFile.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 10);
}
});
然后在OnActivityResult
中添加以下代码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK && requestCode == 10){
Uri uriSound=data.getData();
play(this, uriSound);
}
}
并调用下面的方法创建媒体播放器和播放选定的音频文件。
private void play(Context context, Uri uri) {
try {
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(context, uri);
mp.start();
} 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();
}
}
我有一个服务器端的webapp,提供文件上传和下载功能和一个Android应用程序,上传音乐文件到网站上,然后通过一些URL请求上传文件。 有什么建议吗?
本文向大家介绍Android实现简单音乐播放器(MediaPlayer),包括了Android实现简单音乐播放器(MediaPlayer)的使用技巧和注意事项,需要的朋友参考一下 Android实现简单音乐播放器(MediaPlayer),供大家参考,具体内容如下 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要
我试图使用JavaFX创建一个游戏。我一直试图在游戏中插入一些背景音乐。音乐是兼容的. mp3文件。我目前正在使用来播放每个。每个媒体文件由实际循环和循环的小(可选)介绍音乐组成。如何使用JavaFX实现流畅的音频播放。 我尝试过的方法: > 使用作为一个文件;我尝试改变,。当我进入循环时,音乐的持续时间似乎缩短了。然而,音乐在介绍处重新开始,在错误的地方结束。就好像根本没有抵消音乐。 使用作为两
问题内容: 我目前正在编写一些聊天程序,现在想通过客户端命令播放音乐,例如: 因此,链接将从发送歌曲的客户端发送到服务器。然后,服务器应 不 下载歌曲,而是将其流式传输到每个客户端(他们也不应下载)。问题是,我不知道如何通过基于TCP的连接流mp3。 我的问题是,是否有人可以向我提供我所需要的库/教程/思想/代码示例。 作为替代方案,直接从一个客户的计算机流式传输音乐也是可以的。如果我(作为客户端
我想创建一个组件,可以对播放的歌曲产生影响,这显然意味着我需要使用它的数据,这里的数据是指信号的振幅,通过MediaPlayer播放。 我更喜欢从MediaPlayer中检索文件的数据,以便在一些更改功能中使用它,而不是读取文件,然后通过它进行播放。我可以直接从文件中获取,但这意味着我需要处理MediaPlayer已经支持的不同扩展。< br >如果播放器给我这首歌的原始数据,而我只修改它,那就太
本文向大家介绍android音乐播放简单实现的简单示例(MediaPlayer),包括了android音乐播放简单实现的简单示例(MediaPlayer)的使用技巧和注意事项,需要的朋友参考一下 利用MediaPlayer完成一个最简单的音乐播放。这个基本的控制掌握后,可直接利用为背景乐的控制。 为了能够实现播放,在界面方面,我们需要三个控制按钮,分别是:Play(播放)、Pause(暂停)、St