手机打开网页总是弹出广告new_info.mp3是什么意思

MP3的“三个”码率是什么意思_百度知道
MP3的“三个”码率是什么意思
我在千千静听转换MP3一般哗单糕竿蕹放革虱宫僵软件把自己设为192K的平均码率和恒定码率是什么意思?这个两个有什么关联吗?因为192K不能满足我。。所以我把码率调到320K需要两个都调到320K吗?(我是用CD转的不是用MP3转MP3这样音质会不会比较好?)还有变长码率又是什么意思?谢谢
对了.不要复制别人的文章可以么?知道的和我说说就行了啊..我只要320K的MP3告诉我用CD转320K的MP3,它的变长码率需要改吗哗单糕竿蕹放革虱宫僵?(针对320K的MP3他的变长码率改为什么最好)
--CBR(常数码率Constant Bitrate),从头到尾都是用一种位速率编码,由于音乐有复杂程度不同的段落,所以复杂的段落的压缩品质将比简单的段落差。相对于VBR和ABR来讲,它哗单糕竿蕹放革虱宫僵编码较快,生成的文件体积较大,另外,在编码之前就可以计算出文件大小。--ABR(平均码率Average Bitrate)是动态比特率编码的一种。在指定的文件大小内,以每50帧为一段(30帧约1秒),低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量。ABR可做为VBR和CBR的一种折衷选择。ABR编码质量至少不会比CBR编码质量差,甚至要比CBR编码质量好。--VBR(可变码率Variable Bitrate)是真正的动态比特率编码。根据音频数据即时确定使用什么比特率编码,这是以质量为前提兼顾文件大小的方式,推荐用这种模式编码。注意:VBR编码的码率不得低于112kbps,因为在过度压缩的情况下,VBR编码得到的音频会出现问题。MP3编码时可以采用三种方式中的一种,针对要采用的编码方式做好设置就行了。在LAME 3.98中,VBR设置:medium
150-180kbpsstandard
170-210kbpsextreme
200-240kbps(带fast参数表示采用新算法,压缩速度快,但质量会降低一点点。)insane
CBR 320kbps(就是它了,MP3的顶级品质编码!)r3mix
一种高品质的VBR编码算法,其品质相当于1级(品质从高到低为:0-9)。说明文件里好像没提到,具体情况不清楚。千千静听所呈现出的LAME编码器参数很简单,我们不知道其它参数是采用默认还是最优,所以建议入门者直接使用LAME和一个LAME图形界面进行编码。
其他类似问题
为您推荐:
码率的相关知识
其他2条回答
其实码率是个很广泛的范畴,在通信方面也常常能看到这个词,在这里我们讨论的是电脑多媒体方面的码率,更具体一点来说就是多媒体音频以及视频方面的码率。
首先看看我搜索出来的这几个有关码率的结果:码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。
通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真,围绕这个核心衍生出来的cbr(固定码率)与vbr(可变码率),都是在这方面做的文章,不过事情总不是绝对的,从音频方面来说,码率越高,被压缩的比例越小,音质损失越小,与音源的音质越接近。
但各种播放器使用的...
码率即位速
采样率 比特率(码率) 是决定mp3 清晰度的因素
至少44khz采样率的音乐才能谈效果
但码率则不一定 采用VBR(可变码率)编码的130多的可以达到192K CBR(固定码率)的效果
音频采样 解释
数码音频系统是通过将声波波形转换成一连串的二进制数据来再现原始声音的,实现这个步骤使用的设备是模/数转换器(A/D)它以每秒上万次的速率对声波进行采样,每一次采样都记录下了原始模拟声波在某一时刻的状态,称之为样本。将一串的样本连接起来,就可以描述一段声波了,把每一秒钟所采样的数目称为采样频率或采率,单位为HZ(赫兹)。采样频率越高所能描述的声波频率就越高。采样率决定声音频率的范围(相当于音调),可以用数字波形表示。以波形表示的频率范围通常被称为带宽。要正确理解音频采样...
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁现在百度歌曲怎么下载到手机,要MP3,谢谢_百度知道
现在百度歌曲怎么下载到手机,要MP3,谢谢
方法有:1、可以先在电脑百度中下载好,在复制到手机中。2、直接在手机百度音乐中下载。具体步骤如下:1、下载百度音乐APP,打开软件,搜索所需的音乐名称,然后点击歌曲名称后的图标。2、在弹出的页面中点击【下载】图标。3、在接下来出现的页面中可以选择歌曲的下载品质和歌曲的下载路径,选择完毕后,点击【确定】即可。
其他类似问题
为您推荐:
提问者采纳
百度音乐 首页&nbsp.baidu://2.hiphotos://e; <a href="下载到电脑&&&nbsp.jpg" esrc="传到&/& 搜索 你要的歌曲1.hiphotos,把下载的歌曲&nbsp./zhidao/wh%3D600%2C800/sign=b292dfcbb52d7dd539b700bc97://e;用读卡器&;传到&nbsp、用数据线&/zhidao/pic/item/b5bb52d7dd539b700bc97;手机上&/zhidao/wh%3D450%2C600/sign=7db2cd8a5db085febb52d7dd539b700bc97到&nbsp
以前这个下载是能用右键点的,然后出另存为,现在为什么没有了
现在 你直接点击下载
就会出现 保存的对话框。。。
提问者评价
其他2条回答
下载到电脑上然后复制到手机内存卡首先你要把手机和电脑连接 或者手机内存卡用途读卡器插到电脑上
再怎么弄到手机上,我笨啊
先点下载 然后选择路径到电脑桌面然后接上我上面的回答
手机上可直接下载百度音乐软件,通过软件直接下载,电脑上,歌曲尾部有下载的选项,选好保存的地方,就可下载,可直接选手机内存,也可下载在电脑上在转存到手机
能发下具体的图吗?谢谢
好的,就那趁早来看吧,点击下载的话选择下载,收藏不需要的点进去是这样,然后下载,我用的IE浏览器,所以保存的位置是windows库的下载里
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁今日论坛第 1 个签到,每日签到可得财富值+2,连续5天签到后再连续签到则每日可得财富值
+4,记得每天都来签到哦~
上一主题:
下一主题:
查看: 1349 | 回复: 8
360听 在扫描歌曲时出现 newthread 请问是什么意思?
UID 4951243
财富值 595
交易信用 0
积分/帖子:578
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
360听 在扫描歌曲时出现 newthread 请问是什么意思?
如上所述,不知该怎么办。
UID 4951243
财富值 595
交易信用 0
积分/帖子:578
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
手机是i450,这个软件是360听,在扫描歌曲,就出现这个问题,为什么?
(14.78 KB)
财富值 458
交易信用 0
积分/帖子:390
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
来自:成都
状态: 离线
这是系统错误代码,自己看,你的是3的个错误代码对照:
KErrNotFound-1.......................................找不到指定文件
KErrGeneral-2...........................................一般错误
KErrCancel-3...........................................操作被取消
KErrNoMemory-4......................................内存不足
KErrNotSupported-5.................................不支持所要求的操作
KErrAgument-6........................................错误要求
KErrTotalLossOfprecision-7.........................精确的失去总和
KErrBadHandle-8.......................................错误的物件
KErrOverflow-9.........................................超出限定的界限
KErrUderflow-10.......................................少于限定的界限
KErrAlreadyExsits-11..................................已经存在了
KErrPathNotFound-12..............................找不到指定的目录
KErrDided-13...........................................程序关闭
KErrLnUse-14...........................................指定的物件正被其他程序使用中
KErrServerTerminated-15...........................服务器已关闭
KErrServerBusy-16....................................服务器正忙
KErrCompletion-17....................................完成的过程中出现错误
KErrNotReady-18.......................................还没准备好
KErrUnknow-19........................................不知名的错误
KErrCorrupt-20.........................................错误
KErrAccessDenied-21................................拒绝接受
KErrLocked-22......................................... 锁闭
KErrWrite-23............................................读写失败
KErrDisMounted-24....................................错误的磁盘
KErrEof-25...............................................出乎预料的文件到了尾端
KErrDiskFull-26..........................................磁盘已满
KErrBadDiver-27........................................驱动损坏
KErrBadName-28......................................不允许的名称
KErrCommsLineFail-29................................Comms线失败
KErrCommsFrame-30..................................Comms线框框错误
KErrCommsOverrun-31.............................. Comms线超频错误
KErrCommsParity-32.................................Comms同位错误
KErrTimeOut-33......................................时间到了
KErrCouldNotConect-34............................连接失败
KErrCouldNotDisconect-35.........................断连接失败
KErrDisconnected-36.................................断了
KErrBadLibraryEntryPoint-37.......................损坏的资料库接入点
KErrBadDescriptor-38................................损坏的描述讯息块
KErrAbort-39...........................................中断
KErrToolBig-40........................................太大
KErrDivideByZero-41................................. 除于零
KErrBadPower-42.....................................电池没电
KErrDirFull-43...........................................目录满
KErrHardwareNotAvallable-44.....................硬件未准备好
财富值 157
交易信用 0
积分/帖子:151
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
来自:江西省上饶市
状态: 离线
纯看字面意思是 系统新建了一个 新线程的意思 。。。。
财富值 5658
交易信用 0
积分/帖子:5741
连续签到天数:1
全部签到天数:1
注册时间:
手机型号:
来自:泉州
状态: 离线
UID 4951243
财富值 595
交易信用 0
积分/帖子:578
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
回复 #3 吴明月 的帖子
要怎么解决呢?
UID 4951243
财富值 595
交易信用 0
积分/帖子:578
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
回复 #5 zlf520ybp 的帖子
知道怎么解决了吗?
财富值 908
交易信用 0
积分/帖子:888
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
来自:广东饶平
状态: 离线
我看到了编程的影子...
道貌岸然,自生自灭...
交易信用 0
积分/帖子:56
连续签到天数:0
全部签到天数:0
注册时间:
手机型号:
状态: 离线
我的也是这样的情况,大虾出来解决一下呀、急死了
微信扫一扫关注dospy19714人阅读
【Android 简、美音乐播放器开发】(13)
Android应用开发-MP3音乐播放器代码实现(三)
简、美音乐播放器开发记录
这篇博客是接着上一篇博客的,点击列表会进入播放的Activity,在这个Activity会接收到从前面的Activity传来的数据,在通过这些数据来启动服务来播放音乐,整个过程很简单,需要注意的是我们要接收的数据是哪些内容,还有我们向Service要传什么样的数据,这是根据自己的开发思路和需求来决定的,等一下你们会看到小巫到底往Service传了些什么东西,然而这些数据到底起什么作用,需要慢慢去体会,因为这是需要一点一点去调试的。
好了,下面贴一下整个Activity的实现代码,主要是播放的各种状态的实现,因为这个音乐播放器并没有完全开发完,所以朋友们需要弄清楚这一点。如果对代码的实现有不清楚的,可以给小巫留言,小巫有空一定给大家解答。
PlayerActivity.java代码:
package com.wwj.sb.
import java.util.L
import android.app.A
import android.content.BroadcastR
import android.content.C
import android.content.I
import android.content.IntentF
import android.os.B
import android.util.L
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.SeekB
import android.widget.SeekBar.OnSeekBarChangeL
import android.widget.TextV
import android.widget.T
import com.wwj.sb.domain.AppC
import com.wwj.sb.domain.Mp3I
import com.wwj.sb.utils.MediaU
* 播放音乐界面
* @author wwj
* 从主界面传递过来歌曲的Id、歌曲名、歌手、歌曲路径、播放状态
public class PlayerActivity extends Activity{
private TextView musicTitle =
private TextView musicArtist =
private Button previousB // 上一首
private Button repeatB
// 重复(单曲循环、全部循环)
private Button playB
// 播放(播放、暂停)
private Button shuffleB // 随机播放
private Button nextB
private Button searchB //查找歌曲
private Button queueB //歌曲列表
private SeekBar music_progressB
//歌曲进度
private TextView currentP //当前进度消耗的时间
private TextView finalP
//歌曲时间
//歌曲标题
//歌曲艺术家
//歌曲路径
private int listP //播放歌曲在mp3Infos的位置
private int currentT //当前歌曲播放时间
//歌曲长度
//播放标识
private int repeatS
private final int isCurrentRepeat = 1; // 单曲循环
private final int isAllRepeat = 2;
// 全部循环
private final int isNoneRepeat = 3;
// 无重复播放
private boolean isP
// 正在播放
private boolean isP
private boolean isNoneS
// 顺序播放
private boolean isS
// 随机播放
private List&Mp3Info& mp3I
private PlayerReceiver playerR
public static final String UPDATE_ACTION = &com.wwj.action.UPDATE_ACTION&; //更新动作
public static final String CTL_ACTION = &com.wwj.action.CTL_ACTION&;
//控制动作
public static final String MUSIC_CURRENT = &com.wwj.action.MUSIC_CURRENT&; //音乐当前时间改变动作
public static final String MUSIC_DURATION = &com.wwj.action.MUSIC_DURATION&;//音乐播放长度改变动作
public static final String MUSIC_PLAYING = &com.wwj.action.MUSIC_PLAYING&; //音乐正在播放动作
public static final String REPEAT_ACTION = &com.wwj.action.REPEAT_ACTION&; //音乐重复播放动作
public static final String SHUFFLE_ACTION = &com.wwj.action.SHUFFLE_ACTION&;//音乐随机播放动作
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.play_activity_layout);
musicTitle = (TextView) findViewById(R.id.musicTitle);
musicArtist = (TextView) findViewById(R.id.musicArtist);
findViewById();
setViewOnclickListener();
mp3Infos = MediaUtil.getMp3Infos(PlayerActivity.this);
playerReceiver = new PlayerReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(UPDATE_ACTION);
filter.addAction(MUSIC_CURRENT);
filter.addAction(MUSIC_DURATION);
registerReceiver(playerReceiver, filter);
* 从界面上根据id获取按钮
private void findViewById() {
previousBtn = (Button) findViewById(R.id.previous_music);
repeatBtn = (Button) findViewById(R.id.repeat_music);
playBtn = (Button) findViewById(R.id.play_music);
shuffleBtn = (Button) findViewById(R.id.shuffle_music);
nextBtn = (Button) findViewById(R.id.next_music);
searchBtn = (Button) findViewById(R.id.search_music);
queueBtn = (Button) findViewById(R.id.play_queue);
music_progressBar = (SeekBar) findViewById(R.id.audioTrack);
currentProgress = (TextView) findViewById(R.id.current_progress);
finalProgress = (TextView) findViewById(R.id.final_progress);
* 给每一个按钮设置监听器
private void setViewOnclickListener() {
ViewOnclickListener ViewOnClickListener = new ViewOnclickListener();
previousBtn.setOnClickListener(ViewOnClickListener);
repeatBtn.setOnClickListener(ViewOnClickListener);
playBtn.setOnClickListener(ViewOnClickListener);
shuffleBtn.setOnClickListener(ViewOnClickListener);
nextBtn.setOnClickListener(ViewOnClickListener);
searchBtn.setOnClickListener(ViewOnClickListener);
queueBtn.setOnClickListener(ViewOnClickListener);
music_progressBar.setOnSeekBarChangeListener(new SeekBarChangeListener());
* 在OnResume中初始化和接收Activity数据
protected void onResume() {
super.onResume();
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
title = bundle.getString(&title&);
artist = bundle.getString(&artist&);
url = bundle.getString(&url&);
listPosition = bundle.getInt(&listPosition&);
repeatState = bundle.getInt(&repeatState&);
isShuffle = bundle.getBoolean(&shuffleState&);
flag = bundle.getInt(&MSG&);
currentTime = bundle.getInt(&currentTime&);
duration = bundle.getInt(&duration&);
initView();
* 初始化界面
public void initView() {
musicTitle.setText(title);
musicArtist.setText(artist);
music_progressBar.setProgress(currentTime);
music_progressBar.setMax(duration);
switch (repeatState) {
case isCurrentRepeat: // 单曲循环
shuffleBtn.setClickable(false);
repeatBtn.setBackgroundResource(R.drawable.repeat_current_selector);
case isAllRepeat: // 全部循环
shuffleBtn.setClickable(false);
repeatBtn.setBackgroundResource(R.drawable.repeat_all_selector);
case isNoneRepeat: // 无重复
shuffleBtn.setClickable(true);
repeatBtn.setBackgroundResource(R.drawable.repeat_none_selector);
if(isShuffle) {
isNoneShuffle =
shuffleBtn.setBackgroundResource(R.drawable.shuffle_selector);
repeatBtn.setClickable(false);
isNoneShuffle =
shuffleBtn.setBackgroundResource(R.drawable.shuffle_none_selector);
repeatBtn.setClickable(true);
if(flag == AppConstant.PlayerMsg.PLAYING_MSG) { //如果播放信息是正在播放
Toast.makeText(PlayerActivity.this, &正在播放--& + title, 1).show();
else if(flag == AppConstant.PlayerMsg.PLAY_MSG) { //如果是点击列表播放歌曲的话
playBtn.setBackgroundResource(R.drawable.play_selector);
isPlaying =
* 反注册广播
protected void onStop() {
super.onStop();
unregisterReceiver(playerReceiver);
protected void onDestroy() {
super.onDestroy();
* 控件点击事件
* @author wwj
private class ViewOnclickListener implements OnClickListener {
Intent intent = new Intent();
public void onClick(View v) {
switch(v.getId()) {
case R.id.play_music:
if (isPlaying) {
playBtn.setBackgroundResource(R.drawable.pause_selector);
intent.setAction(&com.wwj.media.MUSIC_SERVICE&);
intent.putExtra(&MSG&, AppConstant.PlayerMsg.PAUSE_MSG);
startService(intent);
isPlaying =
} else if (isPause) {
playBtn.setBackgroundResource(R.drawable.play_selector);
intent.setAction(&com.wwj.media.MUSIC_SERVICE&);
intent.putExtra(&MSG&, AppConstant.PlayerMsg.CONTINUE_MSG);
startService(intent);
isPlaying =
case R.id.previous_music:
//上一首歌曲
previous_music();
case R.id.next_music:
//下一首歌曲
next_music();
case R.id.repeat_music:
//重复播放音乐
if (repeatState == isNoneRepeat) {
repeat_one();
shuffleBtn.setClickable(false); //是随机播放变为不可点击状态
repeatState = isCurrentR
} else if (repeatState == isCurrentRepeat) {
repeat_all();
shuffleBtn.setClickable(false);
repeatState = isAllR
} else if (repeatState == isAllRepeat) {
repeat_none();
shuffleBtn.setClickable(true);
repeatState = isNoneR
Intent intent = new Intent(REPEAT_ACTION);
switch (repeatState) {
case isCurrentRepeat: // 单曲循环
.setBackgroundResource(R.drawable.repeat_current_selector);
Toast.makeText(PlayerActivity.this, R.string.repeat_current,
Toast.LENGTH_SHORT).show();
intent.putExtra(&repeatState&, isCurrentRepeat);
sendBroadcast(intent);
case isAllRepeat: // 全部循环
.setBackgroundResource(R.drawable.repeat_all_selector);
Toast.makeText(PlayerActivity.this, R.string.repeat_all,
Toast.LENGTH_SHORT).show();
intent.putExtra(&repeatState&, isAllRepeat);
sendBroadcast(intent);
case isNoneRepeat: // 无重复
.setBackgroundResource(R.drawable.repeat_none_selector);
Toast.makeText(PlayerActivity.this, R.string.repeat_none,
Toast.LENGTH_SHORT).show();
intent.putExtra(&repeatState&, isNoneRepeat);
case R.id.shuffle_music:
//随机播放状态
Intent shuffleIntent = new Intent(SHUFFLE_ACTION);
if (isNoneShuffle) {
//如果当前状态为非随机播放,点击按钮之后改变状态为随机播放
shuffleBtn
.setBackgroundResource(R.drawable.shuffle_selector);
Toast.makeText(PlayerActivity.this, R.string.shuffle,
Toast.LENGTH_SHORT).show();
isNoneShuffle =
isShuffle =
shuffleMusic();
repeatBtn.setClickable(false);
shuffleIntent.putExtra(&shuffleState&, true);
sendBroadcast(shuffleIntent);
} else if (isShuffle) {
shuffleBtn
.setBackgroundResource(R.drawable.shuffle_none_selector);
Toast.makeText(PlayerActivity.this, R.string.shuffle_none,
Toast.LENGTH_SHORT).show();
isShuffle =
isNoneShuffle =
repeatBtn.setClickable(true);
shuffleIntent.putExtra(&shuffleState&, false);
sendBroadcast(shuffleIntent);
* 实现监听Seekbar的类
* @author wwj
private class SeekBarChangeListener implements OnSeekBarChangeListener {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if(fromUser) {
audioTrackChange(progress); //用户控制进度的改变
public void onStartTrackingTouch(SeekBar seekBar) {
public void onStopTrackingTouch(SeekBar seekBar) {
* 播放音乐
public void play() {
//开始播放的时候为顺序播放
repeat_none();
Intent intent = new Intent();
intent.setAction(&com.wwj.media.MUSIC_SERVICE&);
intent.putExtra(&url&, url);
intent.putExtra(&listPosition&, listPosition);
intent.putExtra(&MSG&, flag);
startService(intent);
* 随机播放
public void shuffleMusic() {
Intent intent = new Intent(CTL_ACTION);
intent.putExtra(&control&, 4);
sendBroadcast(intent);
public void audioTrackChange(int progress) {
Intent intent = new Intent();
intent.setAction(&com.wwj.media.MUSIC_SERVICE&);
intent.putExtra(&url&, url);
intent.putExtra(&listPosition&, listPosition);
if(isPause) {
intent.putExtra(&MSG&, AppConstant.PlayerMsg.PAUSE_MSG);
intent.putExtra(&MSG&, AppConstant.PlayerMsg.PROGRESS_CHANGE);
intent.putExtra(&progress&, progress);
startService(intent);
* 单曲循环
public void repeat_one() {
Intent intent = new Intent(CTL_ACTION);
intent.putExtra(&control&, 1);
sendBroadcast(intent);
* 全部循环
public void repeat_all() {
Intent intent = new Intent(CTL_ACTION);
intent.putExtra(&control&, 2);
sendBroadcast(intent);
* 顺序播放
public void repeat_none() {
Intent intent = new Intent(CTL_ACTION);
intent.putExtra(&control&, 3);
sendBroadcast(intent);
public void previous_music() {
playBtn.setBackgroundResource(R.drawable.play_selector);
listPosition = listPosition - 1;
if(listPosition &= 0) {
Mp3Info mp3Info = mp3Infos.get(listPosition);
//上一首MP3
musicTitle.setText(mp3Info.getTitle());
musicArtist.setText(mp3Info.getArtist());
url = mp3Info.getUrl();
Intent intent = new Intent();
intent.setAction(&com.wwj.media.MUSIC_SERVICE&);
intent.putExtra(&url&, mp3Info.getUrl());
intent.putExtra(&listPosition&, listPosition);
intent.putExtra(&MSG&, AppConstant.PlayerMsg.PRIVIOUS_MSG);
startService(intent);
Toast.makeText(PlayerActivity.this, &没有上一首了&, Toast.LENGTH_SHORT).show();
public void next_music() {
playBtn.setBackgroundResource(R.drawable.play_selector);
listPosition = listPosition + 1;
if(listPosition &= mp3Infos.size() - 1) {
Mp3Info mp3Info = mp3Infos.get(listPosition);
url = mp3Info.getUrl();
musicTitle.setText(mp3Info.getTitle());
musicArtist.setText(mp3Info.getArtist());
Intent intent = new Intent();
intent.setAction(&com.wwj.media.MUSIC_SERVICE&);
intent.putExtra(&url&, mp3Info.getUrl());
intent.putExtra(&listPosition&, listPosition);
intent.putExtra(&MSG&, AppConstant.PlayerMsg.NEXT_MSG);
startService(intent);
Toast.makeText(PlayerActivity.this, &没有下一首了&, Toast.LENGTH_SHORT).show();
* 用来接收从service传回来的广播的内部类
* @author wwj
public class PlayerReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(MUSIC_CURRENT)) {
currentTime = intent.getIntExtra(&currentTime&, -1);
currentProgress.setText(MediaUtil.formatTime(currentTime));
music_progressBar.setProgress(currentTime);
} else if(action.equals(MUSIC_DURATION)) {
int duration = intent.getIntExtra(&duration&, -1);
music_progressBar.setMax(duration);
finalProgress.setText(MediaUtil.formatTime(duration));
} else if(action.equals(UPDATE_ACTION)) {
//获取Intent中的current消息,current代表当前正在播放的歌曲
listPosition = intent.getIntExtra(&current&, -1);
url = mp3Infos.get(listPosition).getUrl();
if(listPosition &= 0) {
musicTitle.setText(mp3Infos.get(listPosition).getTitle());
musicArtist.setText(mp3Infos.get(listPosition).getArtist());
if(listPosition == 0) {
finalProgress.setText(MediaUtil.formatTime(mp3Infos.get(listPosition).getDuration()));
playBtn.setBackgroundResource(R.drawable.pause_selector);
以上代码主要有以下几点实现:
1. 播放状态(上一首、下一首、暂停音乐、播放音乐、重复播放、随机播放)
2. 进度更新(自定义Seekbar,Seekbar触发时间控制音乐播放的位置)
3. 接收来自Service的广播,对播放时间,歌曲信息的UI更新。
要注意的地方:
1. 在onResume里接收来自HomeActivity里通过Intent传过来的数据,它是保存在bundle当中的,所以可以通过Bundle来取数据。
2. 通过startSercice来启动服务,在启动之前我们往服务传的数据
* 播放音乐
public void play() {
//开始播放的时候为顺序播放
repeat_none();
Intent intent = new Intent();
intent.setAction(&com.wwj.media.MUSIC_SERVICE&);
intent.putExtra(&url&, url);
intent.putExtra(&listPosition&, listPosition);
intent.putExtra(&MSG&, flag);
startService(intent);
可以看到只有url(音乐播放路径)、listPosition(列表的点击位置,也就是mp3Infos的位置)、MSG(代表播放信息)。这几个是来控制播放的,在Service会很清楚看到这几个参数的作用。这会在下一篇博客中介绍。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3395279次
积分:35212
积分:35212
排名:第86名
原创:635篇
转载:81篇
评论:2441条
难度:中级
类型:技术教程
难度:初级
类型:实战教学
文章:27篇
阅读:46890
阅读:72309
阅读:45803
文章:14篇
阅读:255983
文章:11篇
阅读:144586
文章:10篇
阅读:69100
文章:13篇
阅读:33158
文章:13篇
阅读:338417
微信公众号:wwjblog
微信号:whatswwj
移动开发者狂热群:注明入群理由,里面有一群热爱分享的开发者
高品质课堂推荐:
(2)(2)(3)(5)(9)(3)(6)(2)(2)(2)(8)(5)(10)(3)(2)(3)(4)(12)(1)(5)(5)(6)(7)(2)(13)(11)(11)(8)(14)(10)(16)(8)(15)(23)(13)(12)(12)(11)(17)(28)(18)(20)(8)(11)(20)(13)(14)(10)(23)(18)(15)(36)(27)(47)(16)(3)(28)(33)(14)(13)
从入门到成长到成熟再到优秀,大多数程序员走了前面一段相&#20284;的道路,而有些人却走得更远一些!!!!

我要回帖

更多关于 手机总是弹出软件安装 的文章

 

随机推荐