mp3list.add(map);
}
mAdapter = new SimpleAdapter(this, mp3list,
R.layout.music_list_item_layout, new String[] { “title”, “Artist”, “duration” },
new int[] { R.id.music_title, R.id.music_Artist, R.id.music_duration });
mMusiclist.setAdapter(mAdapter);
}
实现效果如图:
需求2:点击列表的每一项,启动一个服务来播放音乐
1. 注册条目点击监听器OnItemClickListener
2. 定义一个实现OnItemClickListener接口的内部类
3. 定义一个继承Service的服务类PlayerServie
1. 注册条目点击监听器OnItemClickListener
mMusiclist = (ListView) findViewById(R.id.music_list);
mMusiclist.setOnItemClickListener(new MusicListItemClickListener());
mp3Infos = getMp3Infos();
setListAdpter(getMp3Infos());
2. 定义一个实现OnItemClickListener接口的内部类
private class MusicListItemClickListener implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
if(mp3Infos != null) {
Mp3Info mp3Info = mp3Infos.get(position);
Log.d(“mp3Info–>”, mp3Info.toString());
Intent intent = new Intent();
intent.putExtra(“url”, mp3Info.getUrl());
intent.putExtra(“MSG”, AppConstant.PlayerMsg.PLAY_MSG);
intent.setClass(MainActivity.this, PlayerService.class);
startService(intent); //启动服务
}
}
}
3. 定义一个继承Service的服务类PlayerServie(未完善的Service类)
package com.wwj.sb.service;
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.IBinder;
import com.wwj.sb.domain.AppConstant;
@SuppressLint(“NewApi”)
public class PlayerService extends Service {
private MediaPlayer mediaPlayer = new MediaPlayer(); //媒体播放器对象
private String path; //音乐文件路径
private boolean isPause; //暂停状态
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if(mediaPlayer.isPlaying()) {
stop();
}
path = intent.getStringExtra(“url”);
int msg = intent.getIntExtra(“MSG”, 0);
if(msg == AppConstant.PlayerMsg.PLAY_MSG) {
play(0);
} else if(msg == AppConstant.PlayerMsg.PAUSE_MSG) {
pause();
} else if(msg == AppConstant.PlayerMsg.STOP_MSG) {
stop();
}
return super.onStartCommand(intent, flags, startId);
}
/**
-
播放音乐
-
@param position
*/
private void play(int position) {
try {
mediaPlayer.reset();//把各项参数恢复到初始状态
mediaPlayer.setDataSource(path);
mediaPlayer.prepare(); //进行缓冲
mediaPlayer.setOnPreparedListener(new PreparedListener(position));//注册一个监听器
}
catch (Exception e) {
e.printStackTrace();
}
}
/**
- 暂停音乐
*/
private void pause() {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
isPause = true;
}
}
/**
- 停止音乐
*/
private void stop(){
if(mediaPlayer != null) {
mediaPlayer.stop();
try {
mediaPlayer.prepare(); // 在调用stop后如果需要再次通过start进行播放,需要之前调用prepare函数
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void onDestroy() {
if(mediaPlayer != null){
mediaPlayer.stop();
mediaPlayer.release();
}
}
/**
-
实现一个OnPrepareLister接口,当音乐准备好的时候开始播放
*/
private final class PreparedListener implements OnPreparedListener {
private int positon;
public PreparedListener(int positon) {
this.positon = positon;
}
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start(); //开始播放
if(positon > 0) { //如果音乐不是从头播放
mediaPlayer.seekTo(positon);
}
}
}
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
学习分享
在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了
很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘
如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。
2021最新上万页的大厂面试真题
七大模块学习资料:如NDK模块开发、Android框架体系架构…
只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
这份体系学习笔记,适应人群:
第一,学习知识比较碎片化,没有合理的学习路线与进阶方向。
第二,开发几年,不知道如何进阶更进一步,比较迷茫。
第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!
由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
片转存中…(img-SEURPlyL-1712830440448)]
只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
这份体系学习笔记,适应人群:
第一,学习知识比较碎片化,没有合理的学习路线与进阶方向。
第二,开发几年,不知道如何进阶更进一步,比较迷茫。
第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!
由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-d7Ej3unI-1712830440449)]