android播放器实例,android音乐播放器实例
郑州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音乐播放器实例相关推荐
- 一个基于Android开发的简单的音乐播放器
一个基于Android开发的简单的音乐播放器 记得当时老师让我们写因为播放器时,脑子一头雾水,网上杂七杂八的资料也很少有用,因此索性就自己写一篇,希望对有缘人有用. 因为有好多人问我要源码,所以附上g ...
- Android学习之路4——音乐播放器后台播放
Android学习之路4--音乐播放器后台播放 一.实验题目 简单音乐播放器 二.实现内容 实现一个简单的播放器,要求功能有: 播放.暂停.停止.退出功能,按停止键会重置封面转角,进度条和播放按钮:按 ...
- Android课程设计大作业-音乐播放器
Android课程设计大作业-音乐播放器 一.**主要实现界面效果** 1)登录界面 2)音乐列表界面 3)音乐播放界面 二.**系统设计** 1)使用Service播放音乐 2) 前台界面(Acti ...
- Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
Android应用--简.美音乐播放器获取专辑图片(自定义列表适配器) 2013年7月3日简.美音乐播放器开发 第二阶段已增加功能: 1.歌词滚动显示 2.来电监听 3.音量控制 4.左右滑动切换歌词 ...
- Android 小项目之--Mini音乐播放器【简单版】(附源码)
上篇文章讲服务的例子中,有个演示服务的后台播放音乐,今天就来讲一讲多媒体之一的音乐播放. 说到多媒体不得不向上追溯,空间多媒体是如何实现的,如何可以让我们轻松的播放音乐.视频?本章讲述点大致如下: 1 ...
- android学习笔记---43_音乐播放器,音频采集,音乐播放,使用SoundPool播放音效
43_音乐播放器 ------------------------------------------ 1.注意在string.xml中不可以使用java的关键字,因为用关键字的话,会和java内部冲 ...
- Android应用--简、美音乐播放器增加音量控制
Android应用--简.美音乐播放器增加音量控制 2013年6月26日简.美音乐播放器继续完善中.. 题外话:上一篇博客是在6月11号发的,那篇博客似乎有点问题,可能是因为代码结构有点乱的原因,很难 ...
- Android应用--简、美音乐播放器原型放送(作者:小巫)
Android应用--简.美音乐播放器原型放送 2013年7月5日简.美音乐播放器开发 前言:小巫的简.美音乐播放器从5月7号开始开发,之前以为时间很充足,也没有估量整个软件的需求,如果简单实现基本的 ...
- android 锁屏显示音乐播放器,Android锁屏界面控制音乐播放
目前,在锁屏界面控制音乐播放有两种常用方式. 第一种方式:原生Android系统及自带音乐播放器. 锁屏界面端: 原生Android中,锁屏界面相关的UI由KeyguardHostView提供,Key ...
- Android应用--简、美音乐播放器实现专辑倒影效果
Android应用--简.美音乐播放器实现专辑倒影效果 2013年7月4日 简.美音乐播放器开发 第二阶段已增加功能: 1.歌词滚动显示 2.来电监听 3.音量控制 4.左右滑动切换歌词与专辑界面 5 ...
最新文章
- NC | 植物分泌蛋白酶抑制细菌入侵的机理
- 聚类算法 sklearn k_means (返回一维数据的最优聚类)
- Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略
- Ajax请求,跨域小坑
- VTK:参数化超椭球用法实战
- OCP China Day“登陆”,最新技术、方案吸睛!
- Web前端小例子——简单导航栏
- linux 格式化up命令,uptime 命令介绍
- Second easyui框架学习
- 手机重装android系统,手机系统重装
- 模拟退火(bzoj 3680: 吊打XXX)
- 5198.丑数III
- ENVI入门系列教程---一、数据预处理---1.1基本操作--5.x以后的界面(新界面)
- PX4开发环境搭建--模拟器编译及QGroundControl RC遥控模拟配置
- msvcr71.dll文件丢失——解决办法
- 红警2科技时代V2.5d+Win10红警黑屏补丁
- java面试模拟场景,迈向高级的Java面试突围课
- codeblocks无法找到编译器问题的三个原因
- 【wordpress】文章编辑器插件
- required属性