Android开发之基础---------多媒体音乐和视频播放

Android多媒体开发 Android多媒体开发系列文章 Android多媒体开发:录音机 Android多媒体开发:照相机 Android多媒体开发:第三方框架 一、什么是多媒体 多媒体(duō méi tǐ) 的英文单词是Multimedia,它由media和multi两部分组成。一般理解为多种媒体的综合 多媒体是计算机和视频技术的结合,实际上它是两个媒体;声音和图像,或者用现在的术语:音响和电视。 多媒体(Multi 阅读详情

一、音乐播放在后台也可以,所以应该被定义成一个后台服务程序,在播放服务中包括开始、暂停、停止、继续功能。

private void play() {
				// TODO Auto-generated method stub
				player.reset();
				try {
					player.setDataSource("sdcard/bzj.mp3");
					player.prepare();
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} 
				player.start();
				
			}
			private void pause() {
				player.pause();
			}
			private void stop() {
				player.stop();
			}
			private void continuePlay() {
				player.start();
			}
然后就是启动服务

* 把这几个方法抽取成一个接口MusicInterface
* 定义一个中间人类,继承Binder,实现MusicInterface
* 先start启动MusicService,再bind

Intent intent = new Intent(this, MusicService.class);
        startService(intent);
        bindService(intent, conn, BIND_AUTO_CREATE);
播放音乐的进度条设置:

获取当前的播放时间和当前音频的最长时间

int currentPosition = player.getCurrentPosition();
		int duration = player.getDuration();
* 播放进度需要不停的获取,不停的刷新进度条,使用计时器每500毫秒获取一次播放进度
* 发消息至Handler,把播放进度放进Message对象中,在Handler中更新SeekBar的进度

Timer timer = new Timer();
		timer.schedule(new TimerTask() {			
			@Override
			public void run() {
				int currentPosition = player.getCurrentPosition();
				int duration = player.getDuration();
				Message msg = Message.obtain();
				//把播放进度存入Message中
				Bundle data = new Bundle();
				data.putInt("currentPosition", currentPosition);
				data.putInt("duration", duration);
				msg.setData(data);
				MainActivity.handler.sendMessage(msg);
			}
		}, 5, 500);//每500毫秒刷新一次,延时5毫秒执行。
* 在Activity中定义Handler
		static Handler handler = new Handler(){
			public void handleMessage(android.os.Message msg) {
				//取出消息携带的数据
				Bundle data = msg.getData();
				int currentPosition = data.getInt("currentPosition");
				int duration = data.getInt("duration");
			
				//设置播放进度
				sb.setMax(duration);
				sb.setProgress(currentPosition);
			};
		};
*******拖动改变音乐播放进度

		 //给sb设置一个拖动侦听
		 sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
			//停止拖动时调用
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				// TODO Auto-generated method stub
				int progress = seekBar.getProgress();
				mi.seekTo(progress);
			}
			//开始拖动时调用			
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
				// TODO Auto-generated method stub				
			}
			//拖动的时候不断调用			
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				// TODO Auto-generated method stub				
			}
		});	
***************************************************************************************************************************************************

二、视频播放器

双缓冲技术:内存中有两个画布,A画布显示至屏幕,B画布在内存中绘制下一帧画面,绘制完毕后B显示至屏幕,
* A在内存中继续绘制下一帧画面
* 播放视频也是用MediaPlayer,不过跟音频不同,要设置显示在哪个SurfaceView
* SurfaceView一旦不可见,就会被销毁,一旦可见,就会被创建,销毁时停止播放,再次创建时再开始播放

整个过程:继承SurfaceView并实现SurfaceHolder.Callback接口 ----> SurfaceView.getHolder()获得SurfaceHolder对象 ---->SurfaceHolder.addCallback(callback)添加回调函数---->重写三个方法,实现视频播放和资源释放等。

package com.hasee.video;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;

public class MainActivity extends Activity {
	
	MediaPlayer player = null;
	int position = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取控件
        SurfaceView sv = (SurfaceView)findViewById(R.id.sv_video);
        //获取SurfaceView的控制器   holder
        SurfaceHolder holder = sv.getHolder();
        //实现Callback接口
        holder.addCallback(new Callback() {
			//重写三个方法
			@Override
			public void surfaceDestroyed(SurfaceHolder holder) {
				if(player != null){
					position = player.getCurrentPosition();
					player.stop();
					player.release();
					player = null;
				}				
			}
			//SurfaceView创建后调用
			@Override
			public void surfaceCreated(SurfaceHolder holder) {
				if(player == null){
					player = new MediaPlayer();
					player.reset();
					try {
						player.setDataSource("mnt/sdcard/2.3gp");
						//指定视屏播放在哪个surfaceview中
						player.setDisplay(holder);
						player.prepare();
						player.seekTo(position);
						player.start();
					} catch (Exception e) {
						e.printStackTrace();
					}
				}				
			}			
			@Override
			public void surfaceChanged(SurfaceHolder holder, int format, int width,
					int height) {
				// TODO Auto-generated method stub				
			}
		});
    }
}





Android多媒体开发框架 一、Vitamio框架Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染。Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐。到目前,全球已经有超过一万款应用在使用 Vitamio,覆盖用户超过 5亿。支持的平台 Android : 2.1+, ARMv6, VFP, ARMv7, NEON iOS: 4.3+, i 阅读详情

相关推荐

Android多媒体开发与应用(二):Android音视频处理

目录 第一章:音频管理 第二章:视频播放 一、使用系统中已安装的播放器app(使用Intent方式播放)。 二、使用VideoView配合MediaController播放。 三、使用SurfaceView配合MediaPlayer播放 第三章 拍照功能实现及应用 一、调用系统相机 二、使用 Camera API 第四章 音频录制与播放 一、音频录制 二、音频播放 三、动态...

zhang_zxk的博客 2769

github上十二款最著名的Android播放器开源项目

  1.ijkplayer   项目地址: https://github.com/Bilibili/ijkplayer 介绍:Ijkplayer 是Bilibili发布的基于 FFplay 的轻量级 Android/iOS 视频播放器。实现了跨平台功能,API 易于集成;编译配置可裁剪,方便控制安装包大小;支持硬件加速解码,更加省电;提供 Android 平台下应用弹幕集成的解决方案。 ...

joyesee的博客 6663

用 Android Studio 实现移动开发中的多媒体功能

我们的目的是教会大家使用 Android Studio 这个强大的开发工具,在 Android 移动应用中实现多媒体功能,包括音频和视频的播放等。范围涵盖了从环境搭建到具体代码实现,再到最终应用场景的整个开发流程。接下来我们会先介绍相关的核心概念,然后讲解实现多媒体功能的核心算法原理和具体操作步骤,会有详细的代码示例哦。之后通过一个项目实战让大家更清楚怎么实现,还会介绍多媒体功能在实际中的应用场景、推荐一些相关工具和资源,最后探讨未来发展趋势与挑战,并进行总结和提出思考题。

移动开发前沿的博客 719

Android三种路径的音乐播放,视频播放的两种方式

不同路径上的音乐,它的播放方式又不同。应用内的主要在于得有音频文件的存在,手机内的的的提供正确的uri,而网络上就在网络网络环境的配置了。

Wwoo0的博客 5144

全面解析Android音乐播放器开发

本文还有配套的精品资源,点击获取 简介:在Android平台上开发音乐播放器是一个涉及多媒体处理、用户界面设计和系统服务交互的综合性项目。本项目提供了完整的音乐播放器源码,覆盖了从基本的多媒体框架使用到高级特性的实现。源码中包含了 MediaPlayer 类的使用, ContentProvider 的交互,UI设计的最佳实践,通知栏控制,服务和 ...

weixin_30021053的博客 2487

安卓Android源码——音乐播放器源码深度解析

本文还有配套的精品资源,点击获取 简介:本源码文件提供了安卓平台上音乐播放器应用的完整源代码,适合作为学习移动应用开发的实践项目。通过深入源码,开发者将掌握Android系统的多媒体处理、UI设计、事件处理和权限管理等关键技术点。内容涵盖多媒体框架使用、文件系统操作、UI组件应用、后台服务处理、应用生命周期管理、通知栏控制、异步处理技术、权限请求和流媒体播放等核心开发概念。...

weixin_32747681的博客 1374

android开发笔记之多媒体—播放音频(音乐)

Android应用增加动画,视频,音乐等多媒体功能,因此为手机提供音频录制,播放,视频录制,播放的功能十分重要。Android提供了常见音频,视频的编码,解码机制,Android支持的音频格式有MP3,WAV和3GP等,支持的视频格式有MP4和3GP等。Android提供了这些多媒体的支持类,可以非常方便地在手机应用中播放音频,视频等。这些多媒体数据可以来自Android应用的资源文件,也可以来自外

minigeek的博客 1517

Android音乐播放应用开发实战教程.zip

本文还有配套的精品资源,点击获取 简介:本压缩包包含两个MP3音乐文件,用于展示如何在Android应用中集成音乐播放功能。介绍涵盖了Android音频框架、音乐播放控制、音频焦点管理、音乐库集成、UI设计、异步加载、服务使用、通知栏控制、音乐流播放以及版权与权限管理等多个方面的知识要点。开发者可以通过实践这些内容,掌握如何在Android平台上构建音乐播放应用。 1...

weixin_35950531的博客 1539

Android作业4-5(视频播放)

package com.example.test5; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.w...

dj_ing的博客 239

Android手机音乐播放器应用开发指南

Android多媒体框架提供了一套丰富的API集合,允许开发者在应用中集成音频、视频和静态图像资源的播放、录制和处理功能。该框架由一系列核心类和接口组成,它们协同工作以支持多媒体功能。框架的组件包括:MediaRecorder: 用于录制音频和视频。MediaPlayer: 用于播放音频和视频。Camera: 提供了与设备摄像头交互的接口。MediaCodec: 处理底层的编解码任务。AudioTrack 和 AudioRecord: 分别用于播放和录制音频数据流。

weixin_26805451的博客 898

拆解维修指南:当你的大扭矩电动扳手‘罢工’,如何自己动手排查行星齿轮与谐波传动故障?

本文详细解析了大扭矩电动扳手行星齿轮与谐波传动故障的排查与修复方法。从故障初判、拆解工艺到行星齿轮系统检测、谐波传动维护,提供了一套完整的维修指南,帮助用户快速诊断和解决常见问题,延长工具使用寿命。

weixin_42525582的博客 435

视频播放入门1

Android多媒体(Media)入门 18NOV 本讲内容:Android中的音频和视频使用入门指南 Android 提供了 MediaPlayer 和 MediaRecorder 两个工具类,来帮助开发者操作音频和视频。我们通过两个小例子来学习一下多媒体资源的使用。 一、 简单音乐播放器 1、新建一个项目Lesson28_Music , 主

路在脚下 539

BrepNet实战:5分钟搞定三维CAD模型的加工特征识别(附Python代码)

本文详细介绍了BrepNet在三维CAD模型加工特征识别中的实战应用,通过Python代码演示了从环境搭建到模型训练的全流程。BrepNet基于边界表示(BRep)的深度学习框架,能够高效识别加工特征,显著提升工业设计和智能制造领域的效率。文章还提供了性能优化和部署建议,帮助开发者快速实现AI驱动的几何特征识别。

weixin_29044713的博客 506

Android Studio实现多媒体播放器,音乐视频一体化

这次的网络版音乐视频播放器是在前面讲到的音乐播放器项目(Android Studio如何实现音乐播放器)基础上,将音乐文件与项目文件独立开,放在服务器的文件夹里面进行访问,除此之外还添加了视频播放器功能。本次项目综合了Android几乎所有知识,可以让大家熟练掌握Android程序开发的基本技术,涉及Android 基础知识、UI界面、数据存储、四大组件、网络编程、高级编程、多媒体播放器、适配器配置等。大家熟练掌握可以对以后的Android开发有非常大的帮助。

振华OPPO的博客世界 3万+

Redis+QMT实战:如何用Stream模式实现聚宽策略的毫秒级跟单(附完整代码)

本文详细介绍了如何利用Redis Stream模式构建一个低延迟、高可靠的量化交易信号中继系统,实现从聚宽策略到本地QMT的毫秒级跟单。通过对比传统方案,解析了Redis Stream在消息持久化、消费组和显式确认方面的核心优势,并提供了完整的架构设计思路与核心代码实现,帮助量化开发者解决云端策略信号稳定传递至本地实盘的难题。

weixin_29280657的博客 476

避开模板匹配的坑:OpenCVSharp中边缘梯度算法的优化实践

本文深入探讨了OpenCVSharp中边缘梯度算法在模板匹配中的优化实践,解决了传统方法在尺度变化、角度旋转和光照差异下的局限性。通过Sobel算子提取边缘梯度特征,结合轮廓检测和多尺度匹配策略,显著提升了匹配的鲁棒性和准确性。文章还分享了并行计算、内存访问优化等实战技巧,适用于工业检测和自动化识别场景。

http9protocoller的博客 196

14天学会安卓开发(第十三天)Android多媒体开发

14天学会安卓开发   作者:神秘的N (英文名  corder_raine) 联系方式:369428455(反馈) 交流群:284552167(示例,原文档下载) 版权为作者所有,如有转载请注明出处 目录        第十三天.Android多媒体开发... 126 13.1 播放音乐... 126 13.1.1 多媒体架构... 126

corder_raine的专栏 1563

RK3568平台开发系列讲解(中断及异常篇)中断下半部:中断线程化

以前用 work 来线程化地处理中断,一个 worker 线程只能由一个 CPU 执行, 多个中断的 work 都由同一个 worker 线程来处理,在单 CPU 系统中也只能忍着 了。少数中断不能线程化,典型的例子是时钟中断,有些流氓进程不主动让出处理器,内核只能依靠周期性的时钟中断夺回处理器的控制权,时钟中断是调度器的脉搏。中断处理线程是优先级为50、调度策略是SCHED_FIFO的实时内核线程,名称是“irq/”后面跟着Linux中断号,线程处理函数是。,说明是线程化的中断,那么唤醒中断处理线程。

内核笔记 435

android项目开发之多媒体开发

学习内容Ø使用MediaPlayer播放音乐Ø使用SoundPool播放音效Ø使用VideoView播放视频Ø使用MediaRecorder录制音频Ø使用Camera拍照能力目标Ø掌握如何使用MediaPlayer播放音乐Ø掌握如何使用SoundPool播放音效Ø掌握如何使用VideoView播放视频Ø掌握如何使用MediaRecorder录制音频Ø了解如何使用Camera拍照...

张晨光老师的播客 2574

HiCMAE 论文复现:基于 RAVDESS 数据集的音视频情感识别

多模态情感识别是人工智能领域的重要研究方向,旨在通过结合多种感知模态(如音频、视频、文本等)来更准确地识别人类情感状态。与传统单模态方法相比,多模态方法能够利用不同模态间的互补信息,提高情感识别的鲁棒性和准确性。 RAVDESS(Ryerson Audio-Visual Database of Emotional Speech and Song)是一个常用的多模态情感识别数据集,包含24位专业演员(12名男性,12名女性)表达的8种情感状态(中性、平静、快乐、悲伤、愤怒、恐惧、厌恶和惊讶)的音视频数据。

max500600的博客 497

汽车UDS诊断之诊断会话控制服务(0x10)深度剖析

DiagnosticSessionControl就是诊断会话控制。 请求消息定义 A_Data类型 参数名称 Cvt 字节值 助记符 #1 诊断会话控制请求SID M 0x10 DSC #2 子功能=[诊断会话类型] M 0x00-0xFF LEV_DS_ ...

心骗小白话的博客 7419

安卓音乐播放器和视频播放器实现

1.1实验名称 音乐播放器和视频播放器实验。 1.2实验背景 1.2.1需求分析 随着社会的快速发展,现今社会生活紧张,而欣赏音乐和视频是较好的舒缓压力的方式,音乐和视频成了我们生活工作中重要的组成部分。而移动时代的到来,智能手机应用越来越普遍。移动音乐视频服务正是为这一形势而发展起来,开发这种手机音乐播放器和视频播放器的应用,主要为了满足音乐视频爱好人群的需要,于是提出和实现了基于

cris001cris的博客 1593

【数据集】中国陆地生态系统通量观测网 ChinaFLUX

【数据集】中国陆地生态系统通量观测网 ChinaFLUX

WW、forever的博客 187

Android制作简易的音乐播放器和视频播放器

Android制作简易的音乐播放器和视频播放器

weixin_45809829的博客 1615

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

探索Android视频播放的无限可能:Android视频播放器Demo

在移动应用开发中,视频播放功能是不可或缺的一部分。为了帮助开发者快速实现这一功能,我们推出了一个基于Android平台的视频播放器Demo。这个项目不仅展示了如何使用`MediaPlayer`和`SurfaceView`来实现视频播放,还通过自定义控制器提供了丰富的用户交互体验。无论是本地视频还是网络视频,这个Demo都能轻松应对,为你的应用增添一抹亮色。 ## 项目技术分析 ### 核心技术

gitblog_09778的博客 927

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

安卓多媒体开发:音频与视频处理全解析

在移动应用开发中,多媒体功能(音频播放 / 录制、视频播放 / 拍摄)是提升用户体验的核心模块之一。无论是音乐播放器、语音备忘录,还是短视频应用、直播平台,都离不开对音频和视频的处理。Android 系统提供了丰富的 API 支持多媒体开发,从基础的播放功能到复杂的音视频编辑,开发者可以根据需求选择合适的方案。

2501_93564530的博客 1565

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: Android开发之基础----------多媒体图片加载、拍照和摄像(一)
下一篇: 数据库应用之-------------事务
杨鑫校
博客等级 码龄11年 24粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值