Android---控制多媒体应用程序的音量和播放

android调节系统音量之获取和设置音量(媒体音量、通话音量和提示音量等) android调节系统音量之获取和设置音量(媒体音量、通话音量和提示音量等) import android.app.Service; import android.content.Context; import android.media.AudioManager; /** * 音量工具类 */ public class VolumeUtil { private AudioManager mAudioManager; public VolumeUtil(){} public 阅读详情

本文译自:http://developer.android.com/training/managing-audio/volume-playback.html

良好的用户体验是具有可预见性的。如果你的应用程序要播放多媒体,那么用户能够使用设备的硬件或软件来控制的音量,如蓝牙耳机或麦克等,这是至关重要的。

同样,在适当的情况下,你的应用程序应该在媒体流上分别提供播放、停止、挂起、跳过、向前等媒体播放操作。

识别要使用的音频流

要创建一个具有可预见性的音频体验,首先是要理解你的应用程序要所要使用的音量流。

Android把音频流分为播放音乐、警告音、通知音、电话铃声、系统声音、通话音、以及DTMF音调。这样做主要目的是允许用户能够独立的控制每个流的音量。

这些流大多受限于系统事件,因此除非你的应用是一个替换闹钟,否则几乎可以可定要使用STREAM_MUSIC流来播放你的音频。

使用硬件的音量键来控制应用程序的音频音量

默认情况下,按下音量控制键会修改正在播放的音频流的音量。如果你的应用程序当前没有播放任何音频,那么点击音量键会调整铃声的音量。

如果你有一个游戏程序或音乐播放器,那么即使在两首歌曲之间或当前游戏位置中没有音乐,使用游戏程序或音乐播放器的音量控制键来控制音量也是好的时机。

你可能想要监听音量按键,并使用这种方法来修改你的音频流的音量。放弃这种想法,Android提供了方便的setVolumeControlStream()方法用于把音量按键指向你所指定的音频流。

确定了你的应用程序要使用的音频流之后,你应该把它设置为音频流的目标。你应该在应用生命周期的早期来调用这个方法---因为在Activity生命周期内你只需要调用一次该方法,通常你应该在onCreate()方法(控制媒体播放的Activity或Fragment)中调用它。这样就会保证无论你的应用程序什么时候可见,音量控制功能都会时用户所期望的。

setVolumeControlStream(AudioManager.STREAM_MUSIC);

从这时开始,按下音量设备上的音量键就会影响到你指定的音频流,而不管目标Activity或Fragment是否可见。

使用硬件播放控制键来控制应用程序的音频播放

在某些手持设备和很多有线或无线耳机上,会有一些媒体播放按钮,如播放、暂停、停止、跳过或前进等。无论用户什么时候按下这些硬件按键中的一个,系统都会发出一个ACTION_MEDIA_BUTTON操作类型的Intent广播。

要响应媒体按钮的点击事件,你需要在你的清单文件中注册一个BroadcastReceiver,来监听这个操作类型的广播,注册方法如下:

<receiverandroid:name=".RemoteControlReceiver"> 
   
<intent-filter> 
        <action android:name="android.intent.action.MEDIA_BUTTON" /> 
    </intent-filter> 
</receiver>

该接收器会提取它自己需要的那个按键所发出的广播。Intent对象在EXTRA_KEY_EVENT键下包含这个广播信息,这个键下包含了KeyEvent类,其中包含了KEYCODE_MEDIA_*静态常量列表,这个列表代表了每个可能的媒体按钮,如KEYCODE_MEDIA_PLAY_PAUSE和KEYCODE_MEDIA_NEXT。

下面代码片段显示了如何提取被按下的媒体按钮,从而影响媒体播放:

publicclassRemoteControlReceiverextendsBroadcastReceiver{ 
   
@Override 
    public void onReceive(Context context, Intent intent) { 
        if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { 
            KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); 
            if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) { 
                // Handle key press. 
            } 
        } 
    } 
}

因为复杂的应用程序可能想要监听媒体按钮的按下事件,所以在你的应用程序接收到媒体按钮按下事件时,你还必须要编程控制。

下面使用AudioManager的代码可能被你的应用程序用于注册和反注册媒体按钮事件。注册后,你的广播接收器就会成为所有媒体按钮广播的专有接收器。

AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE); 
...
 
 
// Start listening for button presses 
am.registerMediaButtonEventReceiver(RemoteControlReceiver); 
... 
 
// Stop listening for button presses 
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);

通常,应用程序应该在它们闲置或不可见时(如在onStop()回调期间),解除对该接收器的注册。但是实际上对于媒体播放应用程序就不那么简单了,因为在应用程序不可见时响应媒体播放按钮是最重要的,因此它不能被屏幕上的UI所控制。

注册和反注册媒体按钮事件接收器的一个比较好的方法是在你的应用程序获得或丢失音频焦点的时候。这会在下节课详细介绍。

Android多媒体播放器项目实战源码详解 本文还有配套的精品资源,点击获取 简介:本项目为基于Android的多媒体播放应用,涉及多媒体框架使用、用户界面设计、文件管理、音视频编解码技术、流媒体支持、权限管理、异步处理、服务与通知处理、事件监听及性能优化等关键知识点。通过源码分析,开发者可以全面掌握Android平台上的多媒体播放技术,并提升编程技能。 1. Android项目多媒体播放器概念解析 ... 阅读详情

相关推荐

Android 自定义View (四) 视频音量调控

资源为博客实例:http://blog.youkuaiyun.com/lmj623565791/article/details/24529807 有问题博客留言

Android-工作遭遇-音视频播放控制篇(2)

此篇主要是讲Android的视频播放 在android播放视频,无非就是videoview或者mediaplay. 但是查看videoview的源码之后,发现.他也是基于mediaplay进行播放的.就决定自己封装一个mediaplay.用于日常使用. 首先看下MediaPlay的介绍.我的另外一篇文章讲述到了音频的播放. Android-工作遭遇-音量音频播放控制篇(1) Andro...

ccx 371

Android中默认系统的声音/大小修改和配置详解

前言 声音管理系统用来实现声音的输入和输出、声音的控制和路由等功能,包括主和各种音源的音量调节、声音焦点控制,声音外设的检测和状态管理,声音源输入和输出的策略管理、音效的播放、音轨设置和播放、录音设置和启动等功能。 最近在做定制需求的时候,需要修改系统通知的声音,将其禁用掉,避免第三方应用发送通知时,声音很大吓到用户。索性就把通知声音关掉。下面就说说关闭声音的几种方法,以及修改系统默认声音的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 本文是基于Android5.1的代码 一、直接修改系统层默认的声音大小 在系统代码frameworks/base/media/jav

android tv 菜单键,Android TV开发总结(三)构建一个TV app的焦点控制及遇到的坑

前言:关于《TV Metro界面(仿泰捷视频TV版)源码解析》由于都是相关代码,就不发公众号了,有兴趣的可以看链接:http://blog.youkuaiyun.com/hejjunlin/article/details/52822499,今天介绍下TV开发中有焦点问题。在TV开发中没有以前我们phone端的dispatchTouchEvent、onInterceptTouchEvent、onTouchEve...

weixin_42515377的博客 778

Workbench中直接调用ICEM CFD进行网格划分

自从ANSYS 12.0之后,ICEM CFD就从Workbench中被分离出去,作为一个独立的程序使用了。取而代之的是Meshing模块。 在Meshing的属性节点菜单中右键点击Mesh,选择Insert > Method,插入方法。 选择需要划分网格的几何体,点击apply。此时Geometry显示为1 Body。 设置Method为MultiZone,如果不设置成这个的话,找不到进入ICEM CFD的入口。如果要划分四面体,可以在Mapped Mesh Type中选择其他类型。

Yan的博客 6509

Changer: Feature Interaction Is What You Need forChange Detection

还有“交换“交互是一种完全不需要参数和计算的操作,它是通过交换空间或通道维度上的双时态特征映射来实现的,交换的特征在经过后续的卷积或令牌混合时进行混合。方法二:提出了两种简单的交互策略,AD和特征“交换”,大量的实验表明,它们可以极大地提高MetaChanger的性能,特别是特征“交换”,即使嵌入到复杂的网络中或应用于具有挑战性的数据集。在这里,我们用虚线勾勒本文的重点。这是变化检测任务的基本问题,双时相图像提供了同一地区在不同时间点的图像数据,通过对比这两个时间点的图像,我们可以检测出该地区的变化。

yokon的博客 1619

关于监听Android的静音键以及音量按键

最近项目中涉及到物理键以及静音的监听,上来就写了个BrocastReceiver,然后注册,处理。但是在测的时候发现,在不同的手机上的这块的onReceive()回调是有不一样的,以下为总结: 1.类型一:有背景音乐播放的时候 音量上下键调节的是媒体音量,否则调节的是系统音量 2.类型二:按上下键只调节一个音量,媒体音量。 3.类型三:按上下键虽然只显示是调节一个音量,但是会在媒体音量变化的...

lk2021991的博客 3604

利用NURBS曲线进行点云曲面拟合算法

点云拟合曲面算法是将点云数据拟合成一个二次或高次曲面模型的算法。这种算法主要用于三维模型重建、计算机视觉、机器人感知、医学图像处理等领域。最小二乘法(Least Squares Method):通过最小化点到曲面距离的平方和来拟合曲面模型。三角剖分算法(Triangulation-Based Method):将点云构建成三角网格,再拟合成曲面模型。隐式曲面算法(Implicit Surface Method):通过定义一个隐式函数来表示曲面,然后用点云数据来估计隐式函数的系数。

weixin_44770969的博客 1万+

android action_media_button,为何ACTION_MEDIA_BUTTON无法处理事件?

在关于如何进行use hardware playback control keys to control audio playback的培训部分之后,我创建了一个侦听器类:public class RemoteControlReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context arg0, Intent ...

weixin_31261145的博客 882

别再对着数据手册画图了!用HFSS 2023 R2快速复现ESP-01的PCB天线(附模型文件)

本文详细介绍了使用HFSS 2023 R2逆向复现ESP-01 PCB天线的五个关键步骤,包括逆向工程准备、高效建模技巧、材料与边界设置、激励与求解配置以及结果分析与设计验证。通过参数化建模和智能边界检测,大幅提升仿真效率,适用于WIFI和蓝牙设备的射频设计优化。

weixin_30832143的博客 76

如何在 UniApp 中接入讯飞语音听写功能 文末附vue3+vue2完整代码

在开发过程中,我遇到了讯飞接口返回空数据的问题。通过仔细检查传送的每一帧数据,我发现问题出在第一帧的配置信息以及 Base64 数据的切片。确保每一帧的数据正确且符合接口要求,问题就能够得到解决。希望这个过程能帮助你在项目中顺利对接讯飞语音识别。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 994

蓝牙音乐之绝对音量

蓝牙音乐之绝对音量 蓝牙音乐播放中总是避免不了音量调节的操作,生活中最常见的场景就是手机连接蓝牙耳机或音箱播放音乐,通过调节手机上的多媒体音量达到蓝牙音乐音量调节的目的。这些功能是如何具体实现的,使用的技术的什么,你感兴趣吗?本篇文章我们就来一探究竟。 蓝牙音乐音量调节有如下两种方法: 音频数据增益 绝对音量控制 第一种方法是将手机端调节的多媒体音量大小,转化为音频数据的音量增益来间接达到控制音量,多见于安卓系统的设备上,最终的音量大小为音频数据音量增益和远端设备本身的音量设置共同作用的结果。下图为播

坏小子-无线通信技术 1万+

基于Python的专利数据爬虫开发指南:从入门到实战

本文将详细介绍如何使用Python开发一个高效的专利数据爬虫系统,涵盖最新技术栈如Playwright、异步IO、反反爬策略等。文章包含完整代码实现、性能优化技巧及法律合规建议,帮助读者构建可投入生产的专利数据采集解决方案。专利数据是技术创新的重要指标,包含技术细节、申请人信息、法律状态等宝贵信息。企业竞争情报分析技术趋势预测研发方向决策知识产权战略制定。

2201_76125261的博客 1588

创建多媒体APP 之 音频播放:控制你的APP里面音频的声音大小和播放

如果你的APP要播放一个音频文件,那么让你的用户可以按照用户预期的动作来控制这个音频的播放时非常重要的。为了达到最好的用户体验,你的APP需要管理当前的音频播放,保证不是有多个应用在同一时间都在播放音频。一个好的用户体验是要可预期的。如果你的APP可以播放音频,那么用户必须可以来通过一些设备的软件或者硬件来控制你的APP播放音频的音量大小,如蓝牙耳机,头戴耳机等等。 同样的,在合适的地方,播放,

orionhan的专栏 2247

MetaGPT核心模块:Data Interpreter 上手实战 - 数据分析和可视化(附运行过程详解)

上篇文章我们详细解读了 DataInterpreter 的实现原理(论文),本文将开始上手实操,开始写代码用上 DataInterpreter。从最简单的例子开始,先给大家看下其运行过程,看下DataInterpreter是如何自动拆解任务,完成任务的,帮助大家构建直观认识。

同学小张的博客 371

Nature、science、cell旗下刊物

Nature\science\cell子刊说明

计算机视觉 5602

android 多媒体音量控制

//获取多媒体当前音量 public static int getMediaVolume(Context context) { AudioManager mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); return mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); } //获...

米枔的博客 949

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

控制音量与音频播放

编写:kesenhoo - 原文:http://developer.android.com/training/managing-audio/volume-playback.html https://www.cnblogs.com/yangjies145/p/6361851.html 良好的用户体验应该是可预期且可控的。如果我们的应用可以播放音频,那么显然我们需要做到能够通过硬件按钮,软件按钮,蓝牙...

Fred 1235

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

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

Android adb命令设置和获取系统音量

1、查看audio的全部信息(各音频流音量,焦点,策略等) dumpsys audio 2、设置音量并且显示音量UI //stream 3表示多媒体,10表示音量值 media volume --show --stream 3 --set 10 3、音量调大调小 media volume --stream 3 --adj raise media volume --stream 0 --adj lower media volume --show --stream 3 --adj raise

Sunxiaolin2016的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Android自定义系统音量,Android adb命令设置和获取系统音量

1、查看audio的全部信息(各音频流音量,焦点,策略等)dumpsys audio2、设置音量并且显示音量UI//stream 3表示多媒体,10表示音量值media volume --show --stream 3 --set 103、音量调大调小media volume --stream 3 --adj raisemedia volume --stream 0 --adj lowermedi...

weixin_34162851的博客 2008

用Android做的一个简单的视频播放器

視頻播放器项目功能需求 1 项目概述 1.1 项目描述 視頻播放器(以及視頻管理系統)是一款由java(Swing,安卓和数据库)做的手机视频播放器,可以看手机本地的各种视频,通过按钮进入手机视频管理器。 1.2 项目需求 实现手机的视频播放以及视频的管理(二者是分开的,视频播放器和视频管理里系统)。 手机视频播放器用安卓来做,视频管理系统用Swing和数据库制作。 1.2.1 基本功能  初...

qq_42459832的博客 5229

Android 修改系统音量及监听

效果 修改系统音量这种操作还是挺常见的,一般在多媒体开发中都多少会涉及到。 常用方法 获取音频管理器 mAudioManager = this.getSystemService(Context.AUDIO_SERVICE) as AudioManager 获取媒体音量最大值 mMaxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) 获取系统当前媒体音量 mCurrentVolume = mAudioManager.

yechaoa 7730

Android中的多媒体音频和视频播放

智能手机的出现使得手机成为一个便携式多媒体播放器。这种看起来随意、理所当然的强大功能在Android中是如何实现的呢? 1.音频播放MediaPlayer 装载音频文件: (1)static MediaPlayer create(Content,Uri) 从指定Uri来装载音频文件,并返回新创建的MediaPlayer对象。 (2)static MediaPlayer create(C

QuietShake的博客 1762

笔记60 | Android控制音量与音频播放的学习

控制音量与音频播放 编写:kesenhoo 良好的用户体验应该是可预期且可控的。如果我们的应用可以播放音频,那么显然我们需要做到能够通过硬件按钮,软件按钮,蓝牙耳麦等来控制音量。 同样地,我们需要能够对应用的音频流进行播放(Play),停止(Stop),暂停(Pause),跳过(Skip),以及回放(Previous)等动作,并且并确保其正确性。鉴别使用的是哪个音频流(Identify Whic

项勇 | 一天不学点啥就浑身难受 807
上一篇: Thrift的数据类型系统
下一篇: Android---管理音频焦点
FireOfStar
博客等级 码龄18年 1316粉丝 85原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值