广告
返回顶部
首页 > 资讯 > 移动开发 >Android开发简易音乐播放器
  • 536
分享到

Android开发简易音乐播放器

音乐android开发Android 2022-06-06 11:06:31 536人浏览 薄情痞子
摘要

这里介绍一个简易的音乐播放器,供大家参考,具体内容如下 效果图如下: 但是,由于这是一个简易版的音乐播放器,所播放的音乐只有一首,且被写死,但,操作却十分简单,方便理解! 这

这里介绍一个简易的音乐播放器,供大家参考,具体内容如下

效果图如下:

但是,由于这是一个简易版的音乐播放器,所播放的音乐只有一首,且被写死,但,操作却十分简单,方便理解!

这是代码的主要设计:

音乐主要存放在这一个文件中:

下面就来介绍各部分代码:

activity—main。xml:


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="Http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/activity_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#696969">
 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="60dp"
 android:layout_marginTop="10dp"
 android:layout_alignParentTop="true"
 android:id="@+id/title"
 android:orientation="horizontal">
 <TextView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="15dp"
  android:layout_marginBottom="3Dp"
  android:text="生僻字"
  android:textSize="25dp"
  android:gravity="center"
  android:textColor="#ffffff"/>
 </LinearLayout>
 <TextView
 android:layout_width="match_parent"
 android:layout_height="0.5dp"
 android:background="#afafaf"
 android:layout_below="@+id/title"/>
 <ImageView
 android:id="@+id/disc"
 android:layout_width="280dp"
 android:layout_height="280dp"
 android:layout_centerHorizontal="true"
 android:layout_below="@+id/title"
 android:layout_marginTop="50dp"
 android:src="@drawable/xcvb" />
 <ImageView
 android:id="@+id/needle"
 android:layout_width="120dp"
 android:layout_height="120dp"
 android:layout_below="@+id/title"
 android:layout_marginLeft="150dp"/>
 <RelativeLayout
 android:id="@+id/music1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_above="@+id/rl"
 android:layout_marginTop="20dp"
 android:layout_marginBottom="10dp"
 android:gravity="center">
 <SeekBar
  android:id="@+id/music_seek_bar"
  android:layout_width="240dp"
  android:layout_height="wrap_content"/>
 <TextSwitcher
  android:id="@+id/text_switcher"
  android:layout_width="80dp"
  android:layout_height="50dp"
  android:layout_toRightOf="@+id/music_seek_bar">
  <TextView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="00:00/2:00"
  android:textColor="@color/colorAccent"/>
 </TextSwitcher>
 </RelativeLayout>
 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="70dp"
 android:gravity="center"
 android:id="@+id/rl"
 android:layout_marginBottom="20dp"
 android:layout_alignParentBottom="true"
 android:orientation="horizontal">
 <ImageView
  android:id="@+id/playing_pre"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_vertical"
  android:src="@drawable/music_previous" />
 <ImageView
  android:id="@+id/playing_play"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_vertical"
  android:src="@drawable/music_play" />
 <ImageView
  android:id="@+id/playing_next"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="center_vertical"
  android:src="@drawable/music_next" />
 </LinearLayout>
</RelativeLayout>

main。activity部分:


package com.example.cungu.musicdemo;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Build;
import android.os.IBinder;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextSwitcher;
import java.text.SimpleDateFORMat;
import java.util.Date;
public class MainActivity extends AppCompatActivity implements View.OnClickListener,
 Runnable, ServiceConnection, SeekBar.OnSeekBarChangeListener {
 private ImageView disc,needle,playingPre,playingPlay,playingNext;
 private ObjectAnimator discAnimation,needleAnimation;//自定义指针和唱盘
 private boolean isPlaying = true;//0,1 判断是否处于播放状态
 //声明服务
 private static final String TAG = MainActivity.class.getSimpleName();
 private MediaService.MusicController mMusicController;
 //使用方法:mMusicController.play();播放 mMusicController.pause();暂停
 private boolean running;
 private TextSwitcher mSwitcher;
 private SeekBar mSeekBar;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 //设置透明栏
 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  Window window = getWindow();
  window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
   | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
  window.getDecorView().setSystemUiVisibility(
   View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
  );
  window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
  window.setStatusBarColor(Color.TRANSPARENT);
 }
 //滑动条部分
 mSeekBar = (SeekBar) findViewById(R.id.music_seek_bar);
 mSeekBar.setOnSeekBarChangeListener(this);
 mSwitcher = (TextSwitcher) findViewById(R.id.text_switcher);
 mSwitcher.setInAnimation(this, android.R.anim.fade_in);
 mSwitcher.setOutAnimation(this, android.R.anim.fade_out);
 Intent intent = new Intent(this, MediaService.class);
 //增加StartService,来增加后台播放功能
 startService(intent);
 // 绑定服务,使用context来绑定
 // 那个界面需要绑定 就用哪个 Activity
 // 参数1:Intent  代表需要绑定哪一个Service
 // 参数2:ServiceConnection 回调接口,可以接收到Service连接成功和断开的回调,成功就可以取到对象。
 // 绑定服务 参数2就是服务和指定的对象绑定在一起
 bindService(intent, this, BIND_AUTO_CREATE);
 //指针和唱片部分
 initViews();//定义背景图
 setAnimations();
 }
 private void initViews() {
 playingPre = (ImageView) findViewById(R.id.playing_pre);
 playingPlay = (ImageView) findViewById(R.id.playing_play);
 playingNext = (ImageView) findViewById(R.id.playing_next);
 disc = (ImageView) findViewById(R.id.disc);
 needle = (ImageView) findViewById(R.id.needle);
 playingPre.setOnClickListener(this);
 playingPlay.setOnClickListener(this);
 playingNext.setOnClickListener(this);
 }
 //动画设置
 private void setAnimations() {
 discAnimation = ObjectAnimator.ofFloat(disc, "rotation", 0, 360);
 discAnimation.setDuration(20000);
 discAnimation.setInterpolator(new LinearInterpolator());
 discAnimation.setRepeatCount(ValueAnimator.INFINITE);
 needleAnimation = ObjectAnimator.ofFloat(needle, "rotation", 0, 25);
 needle.setPivotX(0);
 needle.setPivotY(0);
 needleAnimation.setDuration(800);
 needleAnimation.setInterpolator(new LinearInterpolator());
 }
 @Override
 public void onClick(View v) {
 int id = v.getId();
 switch (id) {
  case R.id.playing_pre://前一曲
  if (discAnimation != null) {
   discAnimation.end();
   playing();
  }
  break;
  case R.id.playing_play://播放中
  if (isPlaying){
   playing();
  }else {
   if (needleAnimation != null) {
   needleAnimation.reverse();
   needleAnimation.end();
   mMusicController.pause();
   }
   if (discAnimation != null && discAnimation.isRunning()) {
   discAnimation.cancel();
   mMusicController.pause();
   float valueAvatar = (float) discAnimation.getAnimatedValue();
   discAnimation.setFloatValues(valueAvatar, 360f + valueAvatar);
   }
   playingPlay.setImageResource(R.drawable.music_play);
   isPlaying = true;
  }
  break;
  case R.id.playing_next://下一曲
  if (discAnimation != null) {
   discAnimation.end();
   playing();
  }
  break;
  default:
  break;
 }
 }
 //播放:1、播放音乐 2、动画旋转 3、暂停图片切换为播放按钮图片
 private void playing(){
 needleAnimation.start();
 discAnimation.start();
 playingPlay.setImageResource(R.drawable.music_pause);
 mMusicController.play();//播放
 isPlaying = false;
 }
//===================================播放歌曲服务开启、停止、结束===============================
 @Override
 protected void onStart() {
 super.onStart();
 Thread thread = new Thread(this);
 thread.start();
 }
 @Override
 protected void onStop() {
 running = false;
 super.onStop();
 }
 @Override
 protected void onDestroy() {
 // 解除绑定
 unbindService(this);
 super.onDestroy();
 }
 //---------------------播放到当前音乐的滑动条及时间设置--------------------------
 @Override
 public void run() {
 running = true;
 try {
  while (running) {
  if (mMusicController != null) {
   long musicDuration = mMusicController.getMusicDuration();
   final long position = mMusicController.getPosition();
   final Date dateTotal = new Date(musicDuration);
   final SimpleDateFormat sb = new SimpleDateFormat("mm:ss");
   mSeekBar.setMax((int) musicDuration);
   mSeekBar.setProgress((int) position);
   mSwitcher.post(
    new Runnable() {
    @Override
    public void run() {
     Date date = new Date(position);
     String time = sb.format(date) + "/" + sb.format(dateTotal);
     mSwitcher.setCurrentText(time);
    }
    }
   );
  }
  Thread.sleep(500);
  }
 } catch (InterruptedException e) {
  e.printStackTrace();
 }
 }
 //-----------------------------
 //服务绑定与解除绑定的回调
 
 @Override
 public void onServiceConnected(ComponentName name, IBinder service) {
 mMusicController = ((MediaService.MusicController) service);
 }
 @Override
 public void onServiceDisconnected(ComponentName name) {
 mMusicController = null;
 }
 public void btnStopService(View view) {
 Intent intent = new Intent(this, MediaService.class);
 stopService(intent);
 }
 @Override
 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
 }
 @Override
 public void onStartTrackingTouch(SeekBar seekBar) {
 }
 @Override
 public void onStopTrackingTouch(SeekBar seekBar) {
 mMusicController.setPosition(seekBar.getProgress());
 }
}

mediaserver部分的代码:


package com.example.cungu.musicdemo;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.Environment;
import android.os.IBinder;
public class MediaService extends Service {
 private MediaPlayer mPlayer;
 
 // 相同应用内部不同组件绑定,可以使用内部类以及Binder对象来返回。
 public class MusicController extends Binder {
 public void play() {
  mPlayer.start();//开启音乐
 }
 public void pause() {
  mPlayer.pause();//暂停音乐
 }
 public long getMusicDuration() {
  return mPlayer.getDuration();//获取文件的总长度
 }
 public long getPosition() {
  return mPlayer.getCurrentPosition();//获取当前播放进度
 }
 public void setPosition (int position) {
  mPlayer.seekTo(position);//重新设定播放进度
 }
 }
 
 @Override
 public IBinder onBind(Intent intent) {
 return new MusicController();
 }
 @Override
 public void onCreate() {
 super.onCreate();
 mPlayer = MediaPlayer.create(this, R.raw.yinyue1);
 }
 
 @Override
 public boolean onUnbind(Intent intent) {
 return super.onUnbind(intent);
 }
 @Override
 public void onDestroy() {
 if (mPlayer.isPlaying()) {
  mPlayer.stop();
 }
 mPlayer.release();
 mPlayer = null;
 super.onDestroy();
 }
}

到此,这一个简易的音乐播放器,就完成了。

但是一个音乐播放器,至少播放的音乐不会只有一首,所以,可以考虑试做一个本地音乐播放器,读取本地的音乐!

您可能感兴趣的文章:教你轻松制作Android音乐播放器android暂停或停止其他音乐播放器的播放实现代码Android简易音乐播放器实现代码Android编程开发音乐播放器实例Android实现简单音乐播放器(MediaPlayer)Android MediaPlayer实现音乐播放器实例代码Android音乐播放器制作 扫描本地音乐显示在手机(一)Android 音乐播放器的开发实例详解简单实现Android本地音乐播放器android实现音乐播放器进度条效果


--结束END--

本文标题: Android开发简易音乐播放器

本文链接: https://www.lsjlt.com/news/28469.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android开发简易音乐播放器
    这里介绍一个简易的音乐播放器,供大家参考,具体内容如下 效果图如下: 但是,由于这是一个简易版的音乐播放器,所播放的音乐只有一首,且被写死,但,操作却十分简单,方便理解! 这...
    99+
    2022-06-06
    音乐 android开发 Android
  • Android实现简易的音乐播放器
    本文实例为大家分享了Android实现简易的音乐播放器,供大家参考,具体内容如下 功能介绍 本次实验实现的是使用Andriod Studio开发一个简易的音乐播放器,所包含的功能有音...
    99+
    2022-11-12
  • python开发简易版在线音乐播放器
    在线音乐播放器,使用python的Tkinter库做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过urllib.urlopen模块打开网址,使用Json模块进行数据的解...
    99+
    2022-06-04
    播放器 在线音乐 简易版
  • Android简易音乐播放器实现代码
    本文实例为大家分享了Android音乐播放器的具体代码,供大家参考,具体内容如下 1.播放项目内的音乐 package com.thm.g150820_android26_p...
    99+
    2022-06-06
    音乐 Android
  • Android音乐播放器开发实战
    本文介绍音乐播放器的音乐播放功能实现。 音乐播放功能最初的形态是根据B站大佬的视频学着做的,现在应该还能搜索到他的视频。当然他只做了一个雏形,印...
    99+
    2022-06-06
    实战 Android
  • android实现简单音乐播放器
    本文实例为大家分享了android音乐播放器的具体代码,供大家参考,具体内容如下 话不多说先上效果 前言 写这个音乐播放器实在是迫不得已。因为我们Andoird课程要求写一个...
    99+
    2022-06-06
    音乐 Android
  • Android Studio如何实现音乐播放器(简单易上手)
    我们大家平时长时间打代码的时候肯定会感到疲惫和乏味,这个时候一边播放自己喜欢的音乐,一边继续打代码,心情自然也愉快很多。音乐带给人的听觉享受是无...
    99+
    2022-06-06
    Android Studio studio 音乐 Android
  • 利用Android开发一个音乐播放器
    本篇文章为大家展示了利用Android开发一个音乐播放器,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。读取本地音乐文件源代码:import android.media.MediaPlayer;imp...
    99+
    2023-05-31
    android roi
  • Android编程开发音乐播放器实例
    本文实例讲述了Android编程开发音乐播放器,分享给大家供大家参考,具体如下: 音乐播放器中综合了以下内容: SeekBar、ListView、广播接收者(以代码的形式注册R...
    99+
    2022-06-06
    音乐 Android
  • Android简单音乐播放实例
    Service翻译成中文是服务,熟悉Windows 系统的同学一定很熟悉了。Android里的Service跟Windows里的Service功能差不多,就是一个不可见的进程在...
    99+
    2022-06-06
    音乐 Android
  • Android利用Service开发简单的音乐播放功能
    android音乐播放效果,简单的服务开启。 这里将用到android的四大组件之一:Service 注意:Service是自大组件之一,需要注册。 什么是服务? 1:“...
    99+
    2023-05-15
    Android Service音乐播放 Android实现音乐播放
  • Python如何实现简易版音乐播放器
    小编给大家分享一下Python如何实现简易版音乐播放器,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、前言今天我们将用Python来创建一个属于自己的音乐播放器。为此,我们将使用三个软件包:Tkinter:用于UIPyg...
    99+
    2023-06-15
  • Android实现简单的音乐播放器
    本文实例为大家分享了Android实现简单音乐播放器的具体代码,供大家参考,具体内容如下 1.制作一个简易的音乐播放器 使用软件:Android studio + jdk1.8 + ...
    99+
    2022-11-13
  • Android应用开发之简易、大气音乐播放器实现专辑倒影效果
    今天要实现的功能是实现专辑倒影效果,这个功能已经属于图像处理方面的了,对图像处理我不怎么在行,等一下会介绍一个很实用的工具类,专门用来进行图像处理的。这个工具类不是我写的,我只...
    99+
    2022-06-06
    音乐 Android
  • Android 开源在线音乐播放器
    封面图:  简介 波尼音乐是一款开源Android在线音乐播放器。 播放本地音乐与在线音乐 在线音乐排行榜,如热歌榜、新歌榜等 高仿云音乐的黑胶...
    99+
    2022-06-06
    开源 在线音乐 音乐 Android
  • Android 音乐播放器的开发实例详解
       本文将引导大家做一个音乐播放器,在做这个Android开发实例的过程中,能够帮助大家进一步熟悉和掌握学过的ListView和其他一些组件。为了有更好的...
    99+
    2022-06-06
    音乐 Android
  • Android怎么用Service开发简单的音乐播放功能
    这篇文章主要介绍“Android怎么用Service开发简单的音乐播放功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android怎么用Service开发简单的音乐播放功能”文章能帮助大家解决问...
    99+
    2023-07-06
  • Android音乐播放器简单实现案例
    目录音乐播放器开发SoundPool 播放多个音频video View播放视频控制摄像头摄像音乐播放器开发 MediaPlayer 是Android 控制音频和视频文件播放类 1.创...
    99+
    2022-12-16
    Android音乐播放器 Android音乐播放 Android播放器
  • Android如何实现简单音乐播放器
    小编这次要给大家分享的是Android如何实现简单音乐播放器,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。开发工具:Andorid Studio 1.3运行环境:Android 4.4 KitKat工...
    99+
    2023-05-31
    android roi 如何实现
  • Android Studio实现音乐播放器的全过程(简单易上手)
    目录前言一、项目概述1、需求分析2、设计分析3、资源文件分析二、开发环境三、准备工具四、详细设计1、搭建主界面布局2、创建服务类2.1、服务概述2.2、服务的创建2.3、服务的启动方...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作