android MediaPlayer类可以得到播放档案位元速率不
MediaPlayer 能不能得到我不知道,但是android系统可以帮你解析到。
方法:在目录data/data/anroidcontentprovidersmedia 这个包里面有一个数据库,是关于各种多媒体的,然后里面有个表,有全部音乐档案(android能识别的格式)的相关属性,比如歌曲名称,歌手,歌曲路径,还有歌曲时间。当然也有位元速率的。你可以利用这个。可以用contentProvider去查询这张表,表的Url是:MediaStoreAudioMediaEXTERNAL_CONTENT_URI这个你可去网上查一下,先关资料多的是。
Cursor cursor = getContentResolver()query(
MediaStoreAudioMediaEXTERNAL_CONTENT_URI, null,
"duration > 60000", null, MediaStoreAudioMediaTITLE);
怎样可以得到免费的QQ播放器是QQ空间的的播放器吗
在QQ商城搜寻栏输入BLUE,会有免费的
android mediaplayer能播放什么格式的档案Android官方公布的文件显示MediaPlayer支援如下视讯格式:
Video H263 X X 3GPP (3gp) and MPEG-4 (mp4)
H264 AVC X 3GPP (3gp) and MPEG-4 (mp4)
MPEG-4 SP X 3GPP (3gp)
这些格式的视讯,基本上属于手机支援的视讯格式。如果想观看其他型别格式的视讯,比如flv等,需要下载暴风、迅雷等播放器。
android mediaplayer可以播放flash吗Android22之后才支援安装Flash外挂并在WebView播放Flash视讯,初步想法是给Activity设定一个全屏的WebView,然后传入一个Flash地址。MediaPlayer类实质上是一个控制器,用于播放OSMF中所支援的任何媒体元素型别。
因此,如果为一个MediaPlayer物件提供ImageElement物件,则它可以生成一幅影象;如果为一个MediaPlayer物件传递VideoElement物件,则它可以渲染一个视讯。
下面列出了由MediaPlayer物件所呈现的每一个公共属性。
● audioPan:一个数字,表示媒体的pan属性。
● autoDynamicStreamSwitch:一个布林值,指示媒体是否自动在动态流之间切换。
● autoPlay:一个布林值,定义媒体是否在载入 *** 作成功完成后立即开始播放。
● autoRewind:一个布林值,定义媒体在回放完成后是否返回到回放起始位置。
● buffering:一个布林值,指示媒体当前是否正在缓冲。
● bufferLength:一个数字,指示当前媒体缓冲区中的内容长度,以秒为单位。
● bufferTime:一个数字,指示媒体缓冲区的适宜长度,以秒为单位。
● bytesLoaded:一个数字,返回媒体已经载入内容的位元组数。
● bytesLoadedUpdateInterval:一个数字,表示为bytesLoaded属性分派改变事件的间隔时间。
● bytesTotal:一个数字,表示媒体将要载入的总位元组数。
● canBuffer:一个布林值,指示媒体是否可以缓冲。
● canLoad:一个布林值,指示媒体是否可以载入。
● canPause:一个布林值,指示媒体是否可以暂停。
● canPlay:一个布林值,指示媒体是否可以播放。
● canSeek:一个布林值,指示媒体是否可以定址。
● currentDynamicStreamIndex:一个整数,代表当前正在渲染的动态媒体流的索引。
● currentTime:一个数字,返回播放头的当前时间,以秒为单位。
● currentTimeUpdateInterval:一个数字,定义当前时间分派变化事件之间的时间间隔,以毫秒为单位。
● displayObject:媒体的DisplayObject物件。
● drmEndDate:一个日期,指示回放视窗的结束日期。
● drmPeriod:一个数字,返回回放视窗的长度,以秒为单位。
● drmStartDate:一个日期,指示回放视窗的开始日期。
● drmState:一个字串,指示该媒体DRM的当前状态。
● duration:一个数字,表示媒体回放的持续时间,以秒为单位。
● dynamicStreamSwitching:一个布林值,指示当前是否正在进行动态媒体流切换。
● hasAudio:一个布林值,指示媒体是否包含音讯。
● hasDRM:一个布林值,指示媒体元素是否具有DRMTrait。
● isDVRRecording:一个布林值,指示媒体是否支援DVR以及当前是否正在录制。
● isDynamicStream:一个布林值,指示媒体是否由动态流组成。
● loop:一个布林值,指示媒体是否应该在回放完成之后再次播放。
● maxAllowedDynamicStreamIndex:一个整数,表示最大允许的动态流索引。
● media:一个MediaElement物件,定义媒体播放器当前正在控制的源媒体元素。
● mediaHeight:一个数字,定义媒体的高度,以画素为单位。
● mediaWidth:一个数字,定义媒体的宽度,以画素为单位。
● muted:一个布林值,指示媒体当前是否静音。
● numDynamicStreams:一个整数,表示动态流索引的总数。
● paused:一个布林值,指示媒体当前是否暂停。
● playing:一个布林值,指示当前媒体是否正在播放。
● seeking:一个布林值,指示媒体当前是否正在定址。
● state:一个字串,表示媒体的当前状态。
● temporal:一个布林值,指示媒体是否为暂时性的。
● volume:一个数字,表示媒体的音量。
MediaPlayer还提供了许多方便的函式用于控制媒体,包括
● authenticate(username:String = null, password:String = null):用于认证媒体。
● authenticateWithToken(token:Object):使用用做令牌的物件来认证媒体。
● canSeekTo(seconds:Number):用于确定媒体是否可定址到指定时间,以秒为单位。
● getBitrateForDynamicStreamIndex(index:int):用于获取指定动态流索引的位元速率,以千位元组为单位。
● pause():用于暂停媒体,如果它还没有暂停的话。
● play():用于播放媒体,如果当前它没有处于播放状态的话。
● seek(time:Number):用于跳转到媒体档案中的指定时间。
● s():用于停止回放并返回到媒体档案的开头。
● switchDynamicStreamIndex(index:int):用于切换到特定动态流索引。
对于OSMF专案,将需要汇入MediaPlayer;它可以在o fmedia包中找到。
import o fmediaMediaPlayer;
为了利用一个AudioElement物件,需要建立一个MediaPlayer物件,然后将AudioElement物件赋值给MediaPlayer物件的media属性。
如果将MediaPlayer升级到可以播放rm档案永远不可以
你可以下暴风影音,这样就可以播放很多格式的档案了,而且占用资源少
暴风影音(Media Player Classic)是大家最常用的视讯播放软体之一,除了支援RealOne、Windows Media Player等多媒体格式外,暴风影音还支援QuickTime、DVDRip以及APE等格式。所以,她又有“万能播放器”的美称。可是,在使用过程中,我们经常会碰到这样或那样问题,其实通过简单的设定就可以解决这些问题。
技巧例项一:播放RM档案不正常
有时在播放RM、RMVB档案的时候出现不正常,比如有的时候不能播放,有时播放没有影象,有时无法通过暂停、停止按钮来控制播放。该问题可能是由于暴风影音所支援的Real格式模式的设定造成的,要解决该问题,可以尝试如下的 *** 作:执行暴风影音,依次单击“检视→选项”,在开启的选项视窗左侧选择“格式”。接着,在右侧的副档名列表中选择“Real媒体档案”,将实时媒体流协议控制代码设定改为“DirectShow”。最后,单击“确定”按钮即可。
友情提示:不过要使用暴风影音线上播放RM、RMVB流媒体档案,需要将“DirectShow”改回“RealMedia”。
技巧例项二:无法播放MP4档案
在播放采用QuickTime Pro制作的MP4档案时,暴风影音无法进行播放。这是由于预设情况下,标准的MP4档案采用了DirectShow渲染,而采用QuickTime Pro制作的MP4档案采用了QuickTime渲染。具体的设定方法如下:在“开始”选单中,执行“暴风影音综合设定”。接着,在开启的视窗左侧“任务”中选中“MPEG-4解码设定”,单击“下一步”按钮。然后,在开启的视窗中将“MP4渲染方式”改为“QuickTime”。最后,单击“确定”按钮即可。
友情提示:在下次观看标准MP4档案的时候,别忘了将MP4渲染方式改回“DirectShow”。
技巧例项三:无法载入字幕
预设情况下,在暴风影音中是无法给RMVB档案载入字幕的,要新增字幕必须进行相应的设定。比如播放本地的RMVB档案,可以开启选项视窗,在左侧选择“回放”下的“输出”。接着,在右侧的视窗中,在“DirectShow视讯”中选择“WMR7(无转换)”。
如果要播放线上视讯,同样是在该视窗中,将“RealMedia视讯”选项设定为“DirectX 7”,单击“确定”按钮即可。这样,回到暴风影音主视窗,依次单击“档案→载入字幕”,然后选择字幕档案,单击“开启”按钮即可完成字幕的载入。
技巧例项四:双语**问题
在使用暴风影音播放双语压制的影片的时候,很多人不知道如何去切换声道?其实, *** 作方法很简单:开启选项视窗,在左侧选择“滤镜”下的“音讯切换器”。接着,在右侧的视窗中选择“启用自定义声道对映”复选框,在下面我们可以看到有两个声道,可以按住Shift键单击其中一个声道,这样可以切换声道。最后,单击“确定”按钮即可。
津政发[1987]106号档案从哪里可以得到
你可以到当地劳动人事局查询,或者到当地档案局付费查询还有当地的一些老企业中的文书档案(长期卷)中都有存档的.
上传档案可以得到多少财富值如果成功上传,每当被人下载一次就增加财富值
标价非0分文件被别人下载
+标价/被下载 1 次
每份文件可以通过文件被下载获得财富值奖励的上限为 200 分。
当单份文件下载量超过 500 时, 500-600 次下载之间,每被下载 1 次,可以获得:文件标价分 + 系统奖励 1 分
标价为0分文件被别人下载
1-200 次下载,每被下载 1 次,使用者获得:系统奖励 1 分。
当单份文件下载量超过 500 时,500-600 次下载之间,每被下载 1 次,获得:系统奖励 2 分。
PS:自己下载自己资源不扣分、不加分
你说的是VBScript脚本语言吧 FormatDateTime(Date,vbShortDate) 短日期格式:比如2005-11-30 FormatDateTime(Date,vbLongDate) 长日期格式:比如2005年11月30日 FormatDateTime(Time,vbShortTime) 短时间格式:比如19:02 FormatDateTime(Time,vbLongTime) 长时间格式:比如19:02:24
3)查看进程列表:adb shell "ps",同时也能获取到应用的UID,方式如下(不需root权限):
u0_a开头的都是Android的应用进程,Android的应用的UID是从10000开始,到19999结束,可以在Processjava中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后面的数字就是该应用的UID值减去FIRST_APPLICATION_UID所得的值,所以,对于截图这个应用进程,它是u0_a155,按前面的规制,它的UID就是155 + FIRST_APPLICATION_UID = 10155。
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
使用 adb shell "dumpsys meminfo -s <pakagename | pid>"命令,输出结果分以下4部分:
PS:在apk内调用运行获取其他app的内存数据则需要root权限
adb命令:adb shell dumpsys gfxinfo <package | pid>
正常情况下帧率应该在1667ms左右,1秒60帧,执行结果如下:
详细计算方法如下:
还有一个命令是: adb shell dumpsys SurfaceFlinger --latency LayerName
其中LayerName在各个不同系统中获取的命令是不一样的
在Android 6系统直接就是SurfaceView
在Android 7系统中可以通过 dumpsys window windows | grep mSurface | grep SurfaceView 然后通过数据截取到
在Android 8系统中可以通过 dumpsys SurfaceFlinger | grep android包名获取到
执行命令结果如下:
计算方法比较简单,一般打印出来的数据是129行(部分机型打印两次257行,但是第一部分是无效数据,取后半部分),取len-2的第一列数据为end_time,取len-128的第一列数据为start_time
fps = 127/((end_time - start_time) / 10000000)
至于为啥要取第一列数据,这里不做过多介绍,欢迎参看这两篇文章
老罗的文章SurfaceView原理
Android性能测试之fps获取
至于为啥要处于1000000,因为命令打印出来的是纳秒单位,要转为毫秒进行计算,127就是因为命令一次打印出来127帧的数据而已
有两种方法可以获取
1) adb shell "top -n 5 | grep <package | pid>" ,第三列就是实时监控的CPU占用率(-n 指定执行次数,不需root权限),这边top命令执行需要2到3s左右,一般可以采用busybox 的top命令执行,效率会快很多
2) adb shell "dumpsys cpuinfo | grep <package | pid>"
两种方法直接区别在于,top是持续监控状态,而dumpsys cpuinfo获取的实时CPU占用率数据
adb命令:adb shell "dumpsys batterystats < package | pid>" (Android 50后引入)
获取单个应用的耗电量信息,具体返回结果待研究
adb命令:adb shell "dumpsys battery"
出现信息解读:
AC powered:false 是否连接AC(电源)充电线
USB powered:true 是否连接USB(PC或笔记本USB插口)充电
Wireless powered:false 是否使用了无线电源
status: 1 电池状态,2为充电状态,其他为非充电状态
level:58 电量(%)
scale: 100 电量最大数值
voltage: 3977 当前电压(mV)
current now: -335232 当前电流(mA)
temperature:355 电池温度,单位为01摄氏度
adb 命令:adb shell "dumpsys< package | pid> | grep UID" [通过ps命令,获取app的UID(安装后唯一且固定)]
adb shell cat /proc/uid_stat/UID/tcp_rcv [cat为查看命令,读取tcp_rcv获取应用接收流量信息(设备重启后清零)]
adb shell cat /proc/uid_stat/UID/tcp_snd [cat为查看命令,读取tcp_snd获取应用发送流量信息(设备重启后清零)]
计算流量消耗步骤:
或者还有一种方式获取应用流量消耗:
首先判断类型:
cat /sys/class/thermal/thermal_zone/type
只有红框框出来的是有效的
cat /sys/class/thermal/thermal_zone/temp
获取CPU温度
dumpsys battery | grep temperature 单位01摄氏度
获取/proc/stat文件内容(无权限限制)
总的cpu时间片是 total = user+nice+system+idle+iowait+irq+softirq
忙碌时间为 notidle = user+nice+system +iowait+irq+softirq
cpu使用率计算方法为,先取开始的total值和忙碌时间notidle,隔一段时间片,再取一次计算total2,notidle2, cpuuse = (notidle2 – notidle) 100 / (total2 - total)%
PS:由于Android 8权限收紧,在Android 8系统手机内apk内读取文件内容为空,需要shell权限才可获取文件内容,下同
读/sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq文件的值,X不定,看是几核手机,scaling_cur_freq是否存在也不一定,需要判断
至于为啥不取cpuinfo_cur_freq文件的值,原因是android 6,7系统获取的时候,这个文件shell没有读取权限,需要root权限
参考文章: >
在Android中大概又两种实现方式:一种是java中的Timer类,一种是Android中的Alerm机制。两者功能差不多。
Alerm具有cup运行锁,而Timer不具有cpu锁。
每种手机都具有自己的休眠策略,当长时间不是手机的情况下,cpu就会进入休眠状态。在这种情况下Timer将无法工作。而Alerm具有cpu锁,将会导致cpu无法休眠。
AlarmManager manger=(AlarManger)getSystemService(ContextALARM_SERVICE);
mangerset(int flag,long time,PendingIntent pendingIntent);
set方法参数说明:
第一个参数flag为工作类型:
AlarmManger ELAPSED_REALTIME:让定时时间从开机算起时间算起,但不会唤醒cpu。
AlarmMangerELAPSED_REALTIME_WAKEUP:同样表示让定时时间从开机算起,但会唤醒 CPU。
RTC:表示让定时任务从1970年1月1日算起,但是不唤醒cpu。
RTC_WAKEUP:表示让定时任务从1970年1月1日算起,但是唤醒cpu。
提示:SystemClockelapsedReadtime()---获取系统开机至今所经历的毫秒数;
SystemcurrentTimeMillis()-------方法获取1970年1月1日至今天的毫秒数;
第二个参数: 延时的时间,单位毫秒;
第三个参数: PendingIntent指定具体动作;
注意:Android44版本后set方法触发不准确,有可能会延时一段时间执行(这不是Bug,是电池性能优化,系统会检测目前有多少个Alarm任务存在,然后将触发相近的几个任务一起执行)
如果要精确执行,将 setExact() 方法代替set()方法。
cancel ( PendingIntent operation )
方法将会取消Intent匹配的任何闹钟。
setRepeating(int type,long triggerAtTime,long interval,PendingIntent operation);
参数说明:interval重复时间间隔;(44后触发不准时)
AlarmManger的其它功能:
设置系统时间和时区
添加权限:androidpermissionSET_TIME;
通过setTime(long millis)方法设置系统时间;
需要添加androidpermissionSET_TIME_ZONE权限。
通过setTimeZone(String tz)方法设置时区;
final Calendar mCalendar=CalendargetInstance();
mCalendarsetTimeInMillis(time);
取得系统日期: int mYear = mCalendarget(CalendarYEAR)
int mMonth = mCalendarget(CalendarMONTH)
int mDay = mCalendarget(CalendarDAY_OF_MONTH)
取得系统时间:int mHour= mCalendarget(CalendarHOUR_OF_DAY);
int mMinuts= mCalendarget(CalendarMINUTE)
(2)Android的文件有建议用Time代替Calendar。用Time对CPU的负荷会较小。在写Widget时特别重要。
Time mTime=new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone资料。
mTimesetToNow(); // 取得系统时间。
int year = mTimeyear;
int month = mTimemonth;
int date = mTimemonthDay;
int hour =mTimehour; // 0-23
int minute = mTimeminute;
int second =mTimesecond;
唯一不足是取出时间只有24小时模式这个不叫屏幕的时间 应该叫系统时间
求采纳为满意回答。
android api中SystemClockuptimeMillis()是和gettickcount功能类似的函数:
1GetTickCount是函数。GetTickCount返回(retrieve)从 *** 作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。
2SystemClockuptimeMillis()也是返回程序运行消耗的时间。
以上就是关于android MediaPlayer类可以得到播放档案位元速率不全部的内容,包括:android MediaPlayer类可以得到播放档案位元速率不、android 日期时间使用哪个 calender date time、Android性能测试(内存、cpu、fps、流量、GPU、电量)——adb篇等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)