当前位置:首页 » 安卓系统 » androidmediaplayer

androidmediaplayer

发布时间: 2022-06-25 12:38:12

❶ android中的mediaplayer报错, (-38, 0)

android设计多媒体程序时,出现mediaplayer的(-38, 0)报错, 一般是由于在MediaPlayer还没有同步(Prepared)的状态下调用了 mediaplayer对象.start()方法,所以解决的办法,就是在设置好数据源之后,先调用 mediaplayer对象.prepare() 语句进行同步,然后再播放。

❷ android开发怎么设置,mediaplayer的时间

MediaPlayer (1) 当一个MediaPlayer对象被创建或者调用reset()方法之后,它处于空闲状态,调用release()方法后处于结束状态 1,一个MediaPlayer对象调用了reset()方法后,再调用其它方法可能会触发OnErrorListener.onError()事件,未调用reset()方法则不会触发 2,当Mediaplayer对象不再被使用时,最好调用release()方法对其进行释放,使其处于结束状态,此时它不能被使用 3,Mediaplayer对象被创建时(调用构造方法)处于空闲状态,若使用create()方法创建后则处于准备状态。

❸ android mediaplayer能播放什么格式的文件

Android官方公布的文档显示MediaPlayer支持如下视频格式:
Video H.263 X X 3GPP (.3gp) and MPEG-4 (.mp4)
H.264 AVC X 3GPP (.3gp) and MPEG-4 (.mp4)
MPEG-4 SP X 3GPP (.3gp)
这些格式的视频,基本上属于手机支持的视频格式。如果想观看其他类型格式的视频,比如flv等,需要下载暴风、迅雷等播放器。

❹ android 怎样获得mediaplayer播放的音频数据

Android中音频和视频的播放我们最先想到的就是MediaPlayer类了,该类提供了播放、暂停、停止、和重复播放等方法。该类位于android.media包下,详见API文档。其实除了这个类还有一个音乐播放类那就是SoundPool,这两个类各有不同分析一下便于大家理解

MediaPlayer:

此类适合播放较大文件,此类文件应该存储在SD卡上,而不是在资源文件里,还有此类每次只能播放一个音频文件。

此类用法如下:

1、从资源文件中播放

MediaPlayer player = new MediaPlayer.create(this,R.raw.test);

player.stare();

2、从文件系统播放

MediaPlayer player = new MediaPlayer();

String path = "/sdcard/test.mp3";

player.setDataSource(path);

player.prepare();

player.start();

3、从网络播放

(1)通过URI的方式:

String path="http://**************.mp3"; //这里给一个歌曲的网络地址就行了

Uri uri = Uri.parse(path);

MediaPlayer player = new MediaPlayer.create(this,uri);

player.start();

(2)通过设置数据源的方式:

MediaPlayer player = new MediaPlayer.create();

String path="http://**************.mp3"; //这里给一个歌曲的网络地址就行了

player.setDataSource(path);

player.prepare();

player.start();

SoundPool:

此类特点就是低延迟播放,适合播放实时音实现同时播放多个声音,如游戏中炸弹的爆炸音等小资源文件,此类音频比较适合放到资源文件夹 res/raw下和程序一起打成APK文件。

用法如下:

SoundPool soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);

HashMap<Integer, Integer> soundPoolMap = new HashMap<Integer, Integer>();

soundPoolMap.put(1, soundPool.load(this, R.raw.dingdong1, 1));

soundPoolMap.put(2, soundPool.load(this, R.raw.dingdong2, 2));

public void playSound(int sound, int loop) {

AudioManager mgr = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);

float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);

float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

float volume = streamVolumeCurrent/streamVolumeMax;

soundPool.play(soundPoolMap.get(sound), volume, volume, 1, loop, 1f);

//参数:1、Map中取值 2、当前音量 3、最大音量 4、优先级 5、重播次数 6、播放速度

}

this.playSound(1, 0);

❺ android中mediaplayer怎样暂停

看了你的代码,这样是不行的,destroy对应的是onCreate,你在onStart方法里写media player.start(),在onDestroy方法里写media player.pause(),这样你就可以退出的时候暂停,进入的时候播放了~

❻ Android mediaplayer会随着Activity的销毁而销毁嘛

在Activity finish后,如果不释放mediaplayer占用的资源,有可能会造成内存泄露,建议还是在Activity销毁的时候,先调用一下mediaplayer.release()释放播放器占用的资源。

关于mediaplayer的常用控制方法:
1.prepare()和prepareAsync() 提供了同步和异步两种方式设置播放器进入prepare状态,需要注意的是,如果MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。
2. start()是真正启动文件播放的方法。
3.pause()和stop()比较简单,起到暂停和停止播放的作用。
4.seekTo()是定位方法,可以让播放器从指定的位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。
5.release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。
6.reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。

❼ android中如何判断mediaplayer已经停止

1、release是当MediaPlayer对象(以下简称mp)不再使用才去释放mp所占有的资源。不是一首歌完了之后要用的,而是你不再使用mp之后才调用,比如退出。
2、start和stop之间循环的流程应该是:reset()-->setDataSource(path)-->prepare()-->start()-->stop()--reset()-->重来上述流程一遍。
3、判断停止是要用到
MediaPlayer.OnCompletionListener
mCompleteListener的方法监听。
你对mediaplayer整个流程的理解有点混乱,建议多看代码吧。

❽ android 使用MediaPlayer播放音乐要添加的权限是什么

android 使用MediaPlayer播放音乐要添加的权限是:

public Boolean playMusic(Context myContext) {

bgMusic = new MediaPlayer();

bgMusic = MediaPlayer.create(myContext, R.raw.music);

bgMusic.setLooping(true);

try {

if (bgMusic != null) {

bgMusic.stop();

}

bgMusic.prepare();

bgMusic.start();

return true;

} catch (IllegalStateException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return false;

}

❾ 如何单元测试android mediaplayer

主要涉及类:MediaPlayer
(1) 当一个MediaPlayer对象被创建或者调用reset()方法之后,它处于空闲状态,调用release()方法后处于结束状态
1,一个MediaPlayer对象调用了reset()方法后,再调用其它方法可能会触发OnErrorListener.onError()事件,未调用reset()方法则不会触发
2,当Mediaplayer对象不再被使用时,最好调用release()方法对其进行释放,使其处于结束状态,此时它不能被使用
3,Mediaplayer对象被创建时(调用构造方法)处于空闲状态,若使用create()方法创建后则处于准备状态。
(2) 一般情况下,一些常用的播放控制操作可能因为音频、视频的格式不被支持或者质量较差以及流超时,也有可能由于开发者的疏忽使得Mediaplayer对象处于无效状态等而导致错误。此时可通过注册setOnErrorListener方法实现监控。如果发生了错误,Mediaplayer对象将处于多雾状态,可以使用reset()方法来回复错误。
(3) 任何Mediaplayer对象都必须先处于准备状态,然后才开始播放
(4) 要开始播放Mediaplayer对象都必须成功调用start()方法,可通过isPlaying()方法来检测是否正在播放
(5) 当Mediaplayer对象在播放时,可以进行暂停和停止操作,pause()方法暂停播放,stop()方法停止播放。处于暂停暂停时可通过start()方法恢复播放,但是处于停止状态时则必须先调用prepare()方法使其处于准备状态,再调用start()方法。
主要方法:
Mediaplayer:构造方法
create: 创建一个要播放的多媒体
getCurrentPosition:得到当前播放位置
getDuration: 得到文件的时间
prepare: 准备(同步)
prepareAsync:准备(异步)
seekTo: 指定播放的位置(以毫秒为单位)
setAudioStreamType: 设置流媒体的类型
setDataSource: 设置数据来源
setDisplay: 设置用SurfaceHolder来显示多媒体
setOnBufferingUpdateListener: 网络流媒体的缓冲监听
setOnErrorListener: 设置错误信息监听
setOnVideoSizeChangedListener:视频尺寸监听
setScreenOnWhilePlaying: 设置是否使用SurfaceHolder来显示
setVolume: 设置音量
//获取sd卡上的音频文件
setDataSource(“/sdcard/test.mp3”);
//装载资源中的音乐
MediaPlayer.create(Activity01.this,R.raw.test);
//目前存在问题,不能循环解析出音频文件
原因:.android_secure文件夹受保护,无法获取里面的文件信息
播放视频
相关类:VideoView
方法说明:
getBufferPercentage:得到缓冲的百分比
getCurrentPosition:得到当前播放位置
getDuration:得到视频文件的时间
resolveAdjustedSize:调整视频显示大小
setMediaController:设置播放控制器模式(播放进度条)
setOnCompletionListener:当视频文件播放完时触发事件
setVideoPath:设置视频源路径
setVideoURI:设置视频源地址
录音
相关类:MediaRecorder
方法说明:
MediaRecorder:构造方法
getMaxAmplitude:得到最大幅度
setAudioEncoder:设置音频编码
setAudioSource:设置音频源
setCamera:设置摄像机
setMaxDuration:设置最长录音时间
setMaxFileSize:设置文件的最大尺寸
setOutputFile:设置输出文件
setOutputFormat:设置输出文件格式
setPreviewDisplay:设置预览
setVideoEncoder:设置视频编码
setVideoFrameRate:设置视频帧的频率
setVideoSize:设置视频的宽度和高度(分辨率)
setVideoSource:设置视频源
File类下的方法:
public static File createTempFile(String prefix, String suffix, File directory)
Creates an empty temporary file in the given directory using the given prefix and suffix as part of the file name.
系统会自动在prefix和suffix之间加上一些数字来构建完整的文件名
实现录音的一般步骤:
1, 实例化MediaRecorder mr,调用构造方法
2, 初始化mr:mr.setAudioSource(MIC)/setVideoSource(CAMERA)
3, 配置DataSource:设置输出文件格式/路径,编码器等
4, 准备录制:mr.prepare()
5, 开始录制:mr.start()
6, 停止录制:mr.stop()
7, 释放资源:mr.release()
注:2,3不可调换顺序
添加许可:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO">
相机设置
相关类:Camera,它是专门用来连接和断开相机服务的类
Camera的几个事件:
Camera.AutoFocusCallback: 自动调焦功能
Camera.ErrorCallback: 错误信息捕捉
Camera.Parameters: 相机的属性参数
Camera.PictureCallback: 拍照、产生图片时触发
Camera.PreviewCallback: 相机预览设置
Camera.ShutterCallback: 快门设置
Camera.Size: 图片的尺寸
Camera类没有构造方法,可通过open()方法来打开相机设备
Camera类的方法介绍:
autoFocus: 设置自动对焦
getParameters: 得到相机参数
open: 启动相机服务
release: 释放相机服务
setParameters: 设置参数
setPreviewDisplay:设置预览
startPreview: 开始预览
stopPreview: 停止预览
takePicture: 拍照
注:takePicture方法要实现3个回调函数作为它的三个参数:Camera.ShutterCallback(快门),和两个Camera.Picture.Callback(图像数据)。
需要许可
<uses-permission android:name="android.permission.CAMERA" />
若要将图片存储至sd卡中,则需要sd卡读写许可
目前存在问题:只能拍照一次,不能重新回到预览界面
闹钟设置
相关类:AlarmManager,它是专门用来设定在某个指定的时间去完成指定的事件。AlarmManager提供了访问系统警报的服务,只要在程序中设置了警报服务,AlarmManager就会通过onReceive()方法去执行这些事件,就算系统处于待机状态,同样不会影响运行。可通过Context.getSystemService(ALARM_SERVICE)方法来获得该服务。
方法说明:
cancel: 取消AlarmManager服务
set: 设置AlarmManager服务
setInexactRepeating:设置不精确周期
setRepeating:设置精确周期
setTimeZone:设置时区
注:需创建一个BroadcastReceiver的子类,并覆盖onReceive()方法
铃声设置
系统自带的铃声都放在/system/medio/audio/文件夹中
铃音类型: TYPE_RINGTONE(来电铃音),TYPE_ALARM,TYPE_NOTIFICATION
相关类:RingtoneManager
方法介绍:
getActualDefaultRingtoneUri:取得指定类型的铃声
getCursor:返回所有可用铃声的游标
getDefaultType:得到指定URI默认的铃声类型
getRingtone
getRingtonePosition:得到铃声位置
getRingtoneUri
getValidRingtoneUri:得到一个可用铃声的URI
isDefault:得到指定的Uri是否为默认的铃声
setActualDefaultRingtoneUri:设置默认的铃声
获取的Cursor共有4列,列名依次为:_id,title,”content://media/internal/audio/media”,title_key
以设置手机铃音为例:
if (isFolder(strRingtongFolder)) {//如果不存在该文件夹则创建一个
// 打开系统铃声设置
Intent intent = new Intent(
RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI, true);
// 类型为来电ringtong
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,
RingtoneManager.TYPE_RINGTONE);
// 设置显示的题目
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置来电的铃声");
// 当设置完成之后返回到当前的activity
startActivityForResult(intent, RingtongButton);
}
然后复写onActivityResult(int requestCode, int resultCode, Intent data)方法,resultCode就是点击设置dialog的按钮编号,需要判断是否点击了确认按钮
if (resultCode != RESULT_OK) {
return;
}
try {
// 得到我们选择的铃声
Uri pickedUri = data .getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
// 将我们选择的铃声选择成默认
if (pickedUri != null) {
RingtoneManager.setActualDefaultRingtoneUri(
Media_RingTongActivity.this,
RingtoneManager.TYPE_RINGTONE, pickedUri);
}
} catch (Exception e) {
e.printStackTrace();
}

❿ android的MediaPlayer.create方法怎么用

播放指定SD卡上的音乐,用mMediaPlayer.setDataSource("\sdcard\")便设置要播放的文件的路径,然后调用start(),stop(),pause()便可实现开始,停止和暂停播放的功能。
而如果是应用中自带的音乐(如游戏中的音效),就是不是sdcard中的音乐了,一般情况下会存在应用目录下的''res\aw\'下,如何设定音乐的播放路径呢,很简单,只需把setDataSource()方法改成由create方法来创建的一个指定资源索引的MediaPlayer对象即可,即,mMediaPlayer
=
MediaPlayer.create(Context
context,
int
resid),在这个方法中,我被resid这个资源ID纠结了一段时间
,不知道如何定义这个资源ID,我将ok.mp3这个音乐文件放在res下的drawable-mdpi目录下,然后将resid设定为R.drawable.ok发现报错,搞的不知所错,接着我又尝试在drawable-mdpi目录下建立test文件,然后将ok.mp3文件放在其目录下,依旧报错,追究原因是我不理解资源ID的意思,后来只能查看书上自带的源码,才解决问题,原来,是在res目录下建立了一个raw文件,然后将ok.mp3文件放在目录下,然后设定resid为R.raw.ok即可,其中raw应该指定的是res目录下的文件目录吧(不是很清楚哦),然后OK指的是MP3音乐文件的名字。

热点内容
苹果平板ipad密码忘了怎么办 发布:2024-05-07 01:17:16 浏览:703
伏吟的算法 发布:2024-05-07 00:51:48 浏览:830
安卓手机上的照相键在哪里 发布:2024-05-07 00:51:45 浏览:605
ftp如何删除顽固文件 发布:2024-05-07 00:50:57 浏览:250
idea文件夹显示 发布:2024-05-07 00:30:04 浏览:249
怎么把ps存储为ai 发布:2024-05-07 00:30:03 浏览:274
参数内存缓存 发布:2024-05-07 00:28:54 浏览:746
android状态栏高度 发布:2024-05-07 00:24:42 浏览:241
数据库主文件 发布:2024-05-07 00:14:41 浏览:608
木头创意解压 发布:2024-05-07 00:11:55 浏览:215