2024年Mini音乐播放器【简单版】(附源码)(1),2024年最新android面试笔试题目

最后

分享一份NDK基础开发资料

详解:Linux网络虚拟化技术

分享内容包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

public class musicActivity extends ListActivity {

//播放对象

private MediaPlayer myMediaPlayer;

//播放列表

private List<String> myMusicList=new ArrayList<String>();

//当前播放歌曲的索引

 private int currentListItem=0;

 //音乐的路径

 private static final String MUSIC\_PATH=new String("/sdcard/");

/** Called when the activity is first created. */

@Override



public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

     setContentView(R.layout.main);

     myMediaPlayer\=new MediaPlayer();



    findView();

    musicList(); 

    listener(); 

} 

//绑定音乐

void musicList(){

    File home\=new File(MUSIC\_PATH);

     if(home.listFiles(new MusicFilter()).length>0){



        for(File file:home.listFiles(new MusicFilter())){

            myMusicList.add(file.getName()); 

        }

         ArrayAdapter<String> musicList=new ArrayAdapter<String> 

        (musicActivity.this,R.layout.musicitme, myMusicList);

         setListAdapter(musicList);

    }

}



//获取按钮

void findView(){

   viewHolder.start\=(Button)findViewById(R.id.start); 

   viewHolder.stop\=(Button)findViewById(R.id.stop); 

   viewHolder.next\=(Button)findViewById(R.id.next); 

   viewHolder.pause\=(Button)findViewById(R.id.pause); 

   viewHolder.last\=(Button)findViewById(R.id.last);

}

//监听事件

void listener(){

    //停止 

   viewHolder.stop.setOnClickListener(new OnClickListener() {



@Override

    public void onClick(View v) {

         // TODO Auto-generated method stub



        if(myMediaPlayer.isPlaying()){ 

            myMediaPlayer.reset(); 

        }

    } 

}); 

   //开始

 viewHolder.start.setOnClickListener(new OnClickListener() {



        @Override

     public void onClick(View v) {

        // TODO Auto-generated method stub

         playMusic(MUSIC\_PATH+myMusicList.get(currentListItem));

     } 

}); 

  //下一首

viewHolder.next.setOnClickListener(new OnClickListener() {

@Override

    public void onClick(View v) { 

        // TODO Auto-generated method stub 

        nextMusic();

    } 

}); 

   //暂停



    viewHolder.pause.setOnClickListener(new OnClickListener() {       

    @Override 

    public void onClick(View v) { 

        // TODO Auto-generated method stub 

        if(myMediaPlayer.isPlaying()){ 

            myMediaPlayer.pause(); 

        }else{ 

             myMediaPlayer.start(); 

        }

    } 

});

   //上一首

viewHolder.last.setOnClickListener(new OnClickListener() {

    @Override

     public void onClick(View v) {

         // TODO Auto-generated method stub

         lastMusic();

    } 

});    

}

//播放音乐

void playMusic(String path){

    try { 

    myMediaPlayer.reset();

     myMediaPlayer.setDataSource(path);



    myMediaPlayer.prepare();

     myMediaPlayer.start();

     myMediaPlayer.setOnCompletionListener(new OnCompletionListener() {         

         @Override

       public void onCompletion(MediaPlayer mp) {

             // TODO Auto-generated method stub

             nextMusic();

         }

     });

 } catch (Exception e) {

    // TODO: handle exception 

    e.printStackTrace(); 

}

}

//下一首

void nextMusic(){

   if(++currentListItem>=myMusicList.size()){

        currentListItem\=0;

    }

    else{

        playMusic(MUSIC\_PATH+myMusicList.get(currentListItem)); 

   }

}

//上一首

void lastMusic(){

   if(currentListItem!=0)

        {

    if(--currentListItem>=0){

        currentListItem\=myMusicList.size();

    } else{

        playMusic(MUSIC\_PATH+myMusicList.get(currentListItem));

    }

       }  else{

        playMusic(MUSIC\_PATH+myMusicList.get(currentListItem));

    }

}

//当用户返回时结束音乐并释放音乐对象

    @Override

 public boolean onKeyDown(int keyCode, KeyEvent event) {



    // TODO Auto-generated method stub

        if(keyCode==KeyEvent.KEYCODE\_BACK){

            myMediaPlayer.stop();

            myMediaPlayer.release();

           this.finish();

            return true;

        }

     return super.onKeyDown(keyCode, event);

 }

    //当选择列表项时播放音乐 

   @Override

 protected void onListItemClick(ListView l, View v, int position, long id) {



    // TODO Auto-generated method stub

     currentListItem\=position;

     playMusic(MUSIC\_PATH+myMusicList.get(currentListItem));

  }

}




运行效果图:



![](https://img-blog.csdnimg.cn/img_convert/70d2b2129377a338bf962637c179dc12.png)



5、Android 模拟器使用SD卡例子中直接指定SD卡里面的音乐文件进行操作,那么我们的Android模拟器如何使用SD卡呢?



*   1、不用操作 DOS 直接使用 Android SDK and AVD Manager 在创建 AVD 时创建一个SD 卡,这样就可以实现,不妨亲手试试。



创建好SD 卡那如何把文件导入SD 卡里面供模拟器使用呢?


### 尾声

在我的博客上很多朋友都在给我留言,需要一些系统的面试高频题目。之前说过我的复习范围无非是个人技术博客还有整理的笔记,考虑到笔记是手写版不利于保存,所以打算重新整理并放到网上,时间原因这里先列出面试问题,题解详见:

![](https://img-blog.csdnimg.cn/img_convert/4a6f2b9d87850ff2bb57b290a94fe303.webp?x-oss-process=image/format,png)
**展示学习笔记**
![](https://img-blog.csdnimg.cn/img_convert/c5beb96a1814138c345e58714d210a23.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/9dbb6888958eeb90775310c276f5c6e2.webp?x-oss-process=image/format,png)



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

先列出面试问题,题解详见:

[外链图片转存中...(img-fQaw5u8g-1715691667648)]
**展示学习笔记**
[外链图片转存中...(img-DgWVjK0u-1715691667649)]
[外链图片转存中...(img-IXRmAPbY-1715691667649)]



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值