Android播放在线音频文件

效果图:

源码下载地址:

http://download.csdn.net/detail/q4878802/9020687

添加网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

工具类

package com.example.onlinemusicplayer;import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;import android.annotation.SuppressLint;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Handler;
import android.util.Log;
import android.widget.SeekBar;public class Player implements OnBufferingUpdateListener, OnCompletionListener, OnPreparedListener {public MediaPlayer mediaPlayer; // 媒体播放器private SeekBar seekBar; // 拖动条private Timer mTimer = new Timer(); // 计时器// 初始化播放器public Player(SeekBar seekBar) {super();this.seekBar = seekBar;try {mediaPlayer = new MediaPlayer();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);// 设置媒体流类型mediaPlayer.setOnBufferingUpdateListener(this);mediaPlayer.setOnPreparedListener(this);} catch (Exception e) {e.printStackTrace();}// 每一秒触发一次mTimer.schedule(timerTask, 0, 1000);}// 计时器TimerTask timerTask = new TimerTask() {@Overridepublic void run() {if (mediaPlayer == null)return;if (mediaPlayer.isPlaying() && seekBar.isPressed() == false) {handler.sendEmptyMessage(0); // 发送消息}}};@SuppressLint("HandlerLeak")Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {int position = mediaPlayer.getCurrentPosition();int duration = mediaPlayer.getDuration();if (duration > 0) {// 计算进度(获取进度条最大刻度*当前音乐播放位置 / 当前音乐时长)long pos = seekBar.getMax() * position / duration;seekBar.setProgress((int) pos);}};};public void play() {mediaPlayer.start();}/*** * @param url*            url地址*/public void playUrl(String url) {try {mediaPlayer.reset();mediaPlayer.setDataSource(url); // 设置数据源mediaPlayer.prepare(); // prepare自动播放} catch (IllegalArgumentException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}// 暂停public void pause() {mediaPlayer.pause();}// 停止public void stop() {if (mediaPlayer != null) {mediaPlayer.stop();mediaPlayer.release();mediaPlayer = null;}}// 播放准备@Overridepublic void onPrepared(MediaPlayer mp) {mp.start();Log.e("mediaPlayer", "onPrepared");}// 播放完成@Overridepublic void onCompletion(MediaPlayer mp) {Log.e("mediaPlayer", "onCompletion");}/*** 缓冲更新*/@Overridepublic void onBufferingUpdate(MediaPlayer mp, int percent) {seekBar.setSecondaryProgress(percent);int currentProgress = seekBar.getMax() * mediaPlayer.getCurrentPosition() / mediaPlayer.getDuration();Log.e(currentProgress + "% play", percent + " buffer");}}

测试类

package com.example.onlinemusicplayer;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.SeekBar;public class MainActivity extends Activity {private SeekBar mSeekBar;private String path = "http://file.kuyinyun.com/group1/M00/90/B7/rBBGdFPXJNeAM-nhABeMElAM6bY151.mp3";private Player mPlayer;private EditText mEditText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mSeekBar = (SeekBar) findViewById(R.id.seekBar);mEditText = (EditText) findViewById(R.id.editText);mEditText.setText(path);mPlayer = new Player(mSeekBar);}/*** 播放* * @param view*/public void play(View view) {new Thread(new Runnable() {@Overridepublic void run() {mPlayer.playUrl(mEditText.getText().toString().trim());}}).start();}}

页面布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextView
        android:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="在线音乐播放器" /><EditText
        android:id="@+id/editText"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="在线音乐路径" /><SeekBar
        android:id="@+id/seekBar"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp" /><Button
        android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="bottom"android:onClick="play"android:text="开始播放" /></LinearLayout>

附加

音频文件我之前是用的科大讯飞语义的音乐场景测试的,科大讯飞的语义场景是基于“酷音云”做的,“酷音云”提供了在线的mp3格式的彩铃音乐(版权问题,只能是这种形式)文件。

测试地址:

http://osp.voicecloud.cn/index.php/default/quicktest/index

测试效果如下(测试之前先添加音乐场景)

转载于:https://www.cnblogs.com/sesexxoo/p/6190549.html

Android播放在线音乐文件相关推荐

  1. Android播放外部音乐文件

    工程目录: manifests增加动态权限 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAG ...

  2. MIDI应用: 播放midi音乐文件的方法 [Win32版本+ C语言版本]

    播放midi音乐文件的方法 背景说明: 在游戏编程中,给程序增加音效几乎是必须的;在普通程序中增加音效也会给使用者带来更好的体验;而mid格式的音效文件体积最小(大约1k到数十k),效果却不亚于MP3 ...

  3. iOS开发,一个使用AVPlayer实现的播放在线音乐的Demo

    前言 最近两天公司暂时没有任务安排,闲着无聊便搞了一个在线音乐播放器(Demo).说实话现在做音乐的开放API没有多少,基本都是爬虫的,GitHub上面有一些别人爬虫下来的某些大型音乐网站的API,我 ...

  4. AVAudioPlayer播放在线音频文件

    AVAudioPlayer播放在线音频文件 一:原里: AVAudioPlayer是不支持播放在线音频的,但是AVAudioPlayer有一个 initWithData的方法:我们可以把在线音频转换为 ...

  5. 计算机毕业设计android的在线音乐播放器app设计(源码+系统+mysql数据库+Lw文档)

    项目介绍 Android是Google公司公布的基于Linux内核的手机操作系统,其代码属于完全开放,为开源软件开发人员提供使用方便的框架和平台.,本文以Android开发平台为基础,介绍了音乐播放器 ...

  6. 基于android的在线音乐播放器app设计

    Android是Google公司公布的基于Linux内核的手机操作系统,其代码属于完全开放,为开源软件开发人员提供使用方便的框架和平台.,本文以Android开发平台为基础,介绍了音乐播放器的开发.首 ...

  7. Android 自动扫描歌曲,Android扫描本地音乐文件开发案例分享

    一.前言 本来觉得so easy,真是没想到,还搞了老半天,搞的我大汗淋漓,要拍桌子摔键盘了. 本想实现的功能是: 通过网易云音乐/百度音乐/QQ音乐/酷狗音乐中一个API,通过关键词/歌手/歌词来搜 ...

  8. python播放在线音乐_Python实现在线音乐播放器

    最近这几天,学习了一下python,对于爬虫比较感兴趣,就做了一个简单的爬虫项目,使用Python的库Tkinsert做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口, ...

  9. 如何在Windows版iTunes中播放Ogg音乐文件

    If you're a music enthusiast who prefers Ogg file formats, you'll find that common players like WMP ...

  10. android 播放手机音乐播放器,推荐六款安卓手机音乐视频播放器软件

    安卓手机音乐视频播放器软件合辑推荐:因为安卓平台的开源性,导致安卓平台上有很多好玩的手机软件.其中,安卓手机音乐播放器软件与安卓手机视频播放器软件是非常受安卓用户欢迎的两大类别.今天,凌少就将音乐与视 ...

最新文章

  1. CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
  2. 【Win10开发】自定义标题栏
  3. 获取顶级常量、祖先链、私有方法
  4. ACM题目————吝啬的国度
  5. Android Apk包的签名出库、自动编译与混淆
  6. 图论--双连通分量--点双连通模板
  7. 什么是SNAT、DNAT?
  8. android7.0uri,整理: 解决Android7.0以上文件报FileUriExposedException问题
  9. eclipse 使用lombok 出现的问题
  10. 比亚迪2021年上半年营收908.85亿元 同比增长50.22%
  11. LeetCode 5380. 数组中的字符串匹配
  12. Maven MyEclipse创建web项目没有src/maim/java
  13. ★古今中外著名14大悖论
  14. python图片标记_用python找出那些被“标记”的照片
  15. dwcs6 mysql站点_dreamweaver cs6中本地站点的管理方法讲解
  16. 人生的意义无非就是在平淡中活着
  17. matlab c2d tustin,Matlab中的c2d函数用法以及绘制传函的Bode图
  18. 管理Linkedin账号三步曲,高效管理领英账号。
  19. 给下拉框加上可输入查询特性-升级版本
  20. 石油基琥珀酸的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. apache部署mo_python
  2. SQL Server 查询哪些对象(表\视图\存储过程)包含有某些内容
  3. javascript对象概念大全
  4. 那些年,备胎一起追的女神
  5. Python:学习笔记(一)
  6. 二、八大基本类型,由来和详解(超全)/读完这个面试再也不怕问到蒙
  7. vue每次请求加头部(shiro+vue)
  8. 深入JavaScript之获取cookie以及删除cookie
  9. Dgraph安装以及使用1
  10. Python12/10--前端之display/overflow使用/清浮动的方式