郑州app开发android音乐播放器实例。布局代码是一个imagebutton和seekbar。

下面是java代码

MainActivity.java

package cn.xhhkj.musiccyd;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ComponentName;

import android.content.Intent;

import android.content.ServiceConnection;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.os.Handler;

import android.os.IBinder;

import android.view.View;

import android.widget.ImageButton;

import android.widget.SeekBar;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

private static final String TAG = "结果是";

private static final int UPDATE_PROGRESS = 0;

public String path = "mnt/sdcard/Music/pingguo.mp3";

private ImageButton ib_play;

private SeekBar sb_progress;

private MusicPlayerService.MyBinder musicController;

private MyConnection conn;

private Handler handler = new Handler(){

public void handleMessage(android.os.Message msg) {

switch (msg.what) {

case UPDATE_PROGRESS:

updateProgress();

break;

}

};

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ib_play = findViewById(R.id.musicbutton);

sb_progress = findViewById(R.id.seekBar);

sb_progress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

if(fromUser){

musicController.seekTo(progress);

}

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

}

});

Intent service = new Intent(this,MusicPlayerService.class);

startService(service);

conn = new MyConnection();

bindService(service, conn, BIND_AUTO_CREATE);

}

public void play(View view) {

//        MediaPlayer player = new MediaPlayer();

//        try {

//            player.setDataSource(path);

//            player.prepare();

//            player.start();

//        } catch (Exception e) {

//            // TODO Auto-generated catch block

//            e.printStackTrace();

//        }

musicController.playPause();

updatePlayIcon();

}

class MyConnection implements ServiceConnection{

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

musicController = (MusicPlayerService.MyBinder)  service;

updatePlayIcon();

sb_progress.setMax(musicController.getDuration());

sb_progress.setProgress(musicController.getCurrentPosition());

}

@Override

public void onServiceDisconnected(ComponentName name) {

}

}

private void updatePlayIcon(){

if(musicController.isPlaying()){

ib_play.setImageResource(R.drawable.pause);

handler.sendEmptyMessage(UPDATE_PROGRESS);

}else{

ib_play.setImageResource(R.drawable.play);

handler.removeMessages(UPDATE_PROGRESS);

}

}

@Override

protected void onStop() {

super.onStop();

handler.removeCallbacksAndMessages(null);

}

@Override

protected void onDestroy() {

super.onDestroy();

unbindService(conn);

}

@Override

protected void onResume() {

super.onResume();

if(musicController!=null){

handler.sendEmptyMessage(UPDATE_PROGRESS);

}

}

private void updateProgress(){

int currentPosition = musicController.getCurrentPosition();

sb_progress.setProgress(currentPosition);

handler.sendEmptyMessageDelayed(UPDATE_PROGRESS, 500);

}

}

MusicPlayerService.java

package cn.xhhkj.musiccyd;

import android.app.Service;

import android.content.Intent;

import android.media.MediaPlayer;

import android.os.Binder;

import android.os.IBinder;

import androidx.annotation.Nullable;

public class MusicPlayerService extends Service {

private MediaPlayer player;

private String path = "mnt/sdcard/Music/pingguo.mp3";

@Nullable

@Override

public IBinder onBind(Intent intent) {

return new MyBinder();

}

public class MyBinder extends Binder {

public void playPause(){

if(player.isPlaying()){

player.pause();

}else{

player.start();

}

}

public boolean isPlaying(){

return player.isPlaying();

}

public int getDuration(){

return player.getDuration();

}

public int getCurrentPosition(){

return player.getCurrentPosition();

}

public void seekTo(int msec){

player.seekTo(msec);

}

}

@Override

public void onCreate() {

super.onCreate();

player = new MediaPlayer();

try {

player.setDataSource(path);

player.prepare();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

android播放器实例,android音乐播放器实例相关推荐

  1. 一个基于Android开发的简单的音乐播放器

    一个基于Android开发的简单的音乐播放器 记得当时老师让我们写因为播放器时,脑子一头雾水,网上杂七杂八的资料也很少有用,因此索性就自己写一篇,希望对有缘人有用. 因为有好多人问我要源码,所以附上g ...

  2. Android学习之路4——音乐播放器后台播放

    Android学习之路4--音乐播放器后台播放 一.实验题目 简单音乐播放器 二.实现内容 实现一个简单的播放器,要求功能有: 播放.暂停.停止.退出功能,按停止键会重置封面转角,进度条和播放按钮:按 ...

  3. Android课程设计大作业-音乐播放器

    Android课程设计大作业-音乐播放器 一.**主要实现界面效果** 1)登录界面 2)音乐列表界面 3)音乐播放界面 二.**系统设计** 1)使用Service播放音乐 2) 前台界面(Acti ...

  4. Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)

    Android应用--简.美音乐播放器获取专辑图片(自定义列表适配器) 2013年7月3日简.美音乐播放器开发 第二阶段已增加功能: 1.歌词滚动显示 2.来电监听 3.音量控制 4.左右滑动切换歌词 ...

  5. Android 小项目之--Mini音乐播放器【简单版】(附源码)

    上篇文章讲服务的例子中,有个演示服务的后台播放音乐,今天就来讲一讲多媒体之一的音乐播放. 说到多媒体不得不向上追溯,空间多媒体是如何实现的,如何可以让我们轻松的播放音乐.视频?本章讲述点大致如下: 1 ...

  6. android学习笔记---43_音乐播放器,音频采集,音乐播放,使用SoundPool播放音效

    43_音乐播放器 ------------------------------------------ 1.注意在string.xml中不可以使用java的关键字,因为用关键字的话,会和java内部冲 ...

  7. Android应用--简、美音乐播放器增加音量控制

    Android应用--简.美音乐播放器增加音量控制 2013年6月26日简.美音乐播放器继续完善中.. 题外话:上一篇博客是在6月11号发的,那篇博客似乎有点问题,可能是因为代码结构有点乱的原因,很难 ...

  8. Android应用--简、美音乐播放器原型放送(作者:小巫)

    Android应用--简.美音乐播放器原型放送 2013年7月5日简.美音乐播放器开发 前言:小巫的简.美音乐播放器从5月7号开始开发,之前以为时间很充足,也没有估量整个软件的需求,如果简单实现基本的 ...

  9. android 锁屏显示音乐播放器,Android锁屏界面控制音乐播放

    目前,在锁屏界面控制音乐播放有两种常用方式. 第一种方式:原生Android系统及自带音乐播放器. 锁屏界面端: 原生Android中,锁屏界面相关的UI由KeyguardHostView提供,Key ...

  10. Android应用--简、美音乐播放器实现专辑倒影效果

    Android应用--简.美音乐播放器实现专辑倒影效果 2013年7月4日 简.美音乐播放器开发 第二阶段已增加功能: 1.歌词滚动显示 2.来电监听 3.音量控制 4.左右滑动切换歌词与专辑界面 5 ...

最新文章

  1. NC | 植物分泌蛋白酶抑制细菌入侵的机理
  2. 聚类算法 sklearn k_means (返回一维数据的最优聚类)
  3. Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略
  4. Ajax请求,跨域小坑
  5. VTK:参数化超椭球用法实战
  6. OCP China Day“登陆”,最新技术、方案吸睛!
  7. Web前端小例子——简单导航栏
  8. linux 格式化up命令,uptime 命令介绍
  9. Second easyui框架学习
  10. 手机重装android系统,手机系统重装
  11. 模拟退火(bzoj 3680: 吊打XXX)
  12. 5198.丑数III
  13. ENVI入门系列教程---一、数据预处理---1.1基本操作--5.x以后的界面(新界面)
  14. PX4开发环境搭建--模拟器编译及QGroundControl RC遥控模拟配置
  15. msvcr71.dll文件丢失——解决办法
  16. 红警2科技时代V2.5d+Win10红警黑屏补丁
  17. java面试模拟场景,迈向高级的Java面试突围课
  18. codeblocks无法找到编译器问题的三个原因
  19. 【wordpress】文章编辑器插件
  20. required属性

热门文章

  1. 网页前端设计-作业二(CSS)
  2. 如何查看Windows电脑上的CA证书
  3. Q群机器人--C语言零基础也能拥有
  4. Linux sed 命令简要
  5. TortoiseGit 使用教程 (图文详解)
  6. html怎么帮图片占位,html占位图img placeholder
  7. matlab差速器建模仿真,matlab 两轮差速模型运动模型公式和运动轨迹模拟
  8. STC8H1K08 - GPIO 按键检测
  9. 2020排行榜!Realworld前端框架的比较
  10. 团体程序设计天梯赛-练习集(并查集)