eoe 移动开发者论坛

 找回密码
 加入eoe

QQ登录

只需一步,快速开始

查看: 16894|回复: 47
收起左侧

[Android实例] Android网络收音机项目(内含源码)

    [复制链接]

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

507

主题

2909

帖子

1万

e币
社区贡献者QQ认证
发表于 2012-6-14 17:57:42 | 显示全部楼层 |阅读模式
Android开发者资料大全eoe版最新下载(开发人员必看最新)
链接:http://www.eoeandroid.com/thread-180924-1-1.html

======================帖子内容===================================
最近喜欢听广播,但是搜索了一下,苦于网上没有Android的网络收音机项目的例子,于是自己动手实现了Android网络收音机项目。
前言,由于很多网络广播使用的协议是mms,来自微软,但是android并不支持这种流媒体协议,我的解决办法是使用Vitamio插件+Vitamio库的方式解决。这样在安装app本身的apk同时还要安装对应你手机的Vitamio插件,这个插件是老外开发的还免费,支持很多媒体格式,安上一个也挺好的,大概3M多。有一点要注意的是这个插件跟硬件有关,所以...所以如果你可以一个一个的试,看哪个适应你的手机硬件,这个插件有4个版本:
ARMv6: for some low end devices (Market, VOV)
VFP: for some low end devices with VFP support (Market, VOV)
ARMv7: for ARMv7 devices without NEON support, such as Tegra 2 powered  devices(Market, VOV)
NEON: for ARMv7 devices with NEON support (Market, VOV)
具体可以上http://vov.io/vitamio/看一下,我的烂手机是VFP这个版本的。
开始前的准备,你最好在上面的官网上下载一份API看看:Vitamio-SDK.7z。SDK里面还有vitamio.jar这个jar文件,里面有流媒体的控制类。OK废话不多说,上代码(导jar包相信大家都了然,这里不作介绍):


AndroidManifest文件

  1. <?xml version="1.0" encoding="utf-8"?
  2. <manifest xmlns:android="[url=http://schemas.android.com/apk/res/android]http://schemas.android.com/apk/res/android[/url]"
  3. package="com.netradiodemo"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdk android:minSdkVersion="10" />
  7. <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  8. <application android:icon="@drawable/icon" android:label="@string/app_name"
  9. android:theme="@android:style/Theme.Black">
  10. <activity android:name=".NetRadioDemoActivity"
  11. android:label="@string/app_name">
  12. <intent-filter>
  13. <action android:name="android.intent.action.MAIN" />
  14. <category android:name="android.intent.category.LAUNCHER" />
  15. </intent-filter>
  16. </activity>
  17. <activity android:name=".compnents.PlayerActivity"></activity>
  18. </application>
  19. </manifest>
复制代码
主页面布局文件main未修改,播放页面布局文件如下play_page

  1. <?xml version="1.0" encoding="utf-8"?>

  2. <LinearLayout xmlns:android="[url=http://schemas.android.com/apk/res/android]http://schemas.android.com/apk/res/android[/url]"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Button
  8. android:id="@+id/btn_start"
  9. android:layout_gravity="center_horizontal"
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:text="听猫扑"
  13. android:textSize="30sp"
  14. android:onClick="doStart"
  15. />
  16. <Button
  17. android:id="@+id/btn_stop"
  18. android:layout_gravity="center_horizontal"
  19. android:layout_width="match_parent"
  20. android:layout_height="wrap_content"
  21. android:text="不听猫扑"
  22. android:textSize="30sp"
  23. android:onClick="doStop"
  24. />
  25. </LinearLayout>
复制代码

第一个activity代码,主要负责检查插件NetRadioDemoActivity
Java代码

  1. package com.netradiodemo;

  2. import io.vov.vitamio.VitamioInstaller;
  3. import io.vov.vitamio.VitamioInstaller.VitamioNotCompatibleException;
  4. import io.vov.vitamio.VitamioInstaller.VitamioNotFoundException;
  5. import android.app.Activity;
  6. import android.content.Intent;
  7. import android.os.Bundle;
  8. import android.util.Log;
  9. import android.view.View;
  10. import android.view.View.OnClickListener;
  11. import android.widget.Button;
  12. import android.widget.LinearLayout.LayoutParams;
  13. import android.widget.TextView;
  14. import android.widget.Toast;
  15. import com.netradiodemo.compnents.PlayerActivity;

  16. public class NetRadioDemoActivity extends Activity {
  17. Intent intent ;

  18. @Override
  19. public void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.main);
  22. intent = new Intent(this, PlayerActivity.class);
  23. TextView tvCheck = new TextView(this);
  24. tvCheck.setText("使用前请检查是否安装了Vitamio插件:");
  25. this.addContentView(tvCheck, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
  26. Button btnCheck = new Button(this);
  27. btnCheck.setText("检查");
  28. btnCheck.setOnClickListener(new OnClickListener() {
  29. @Override
  30. public void onClick(View arg0) {

  31. try {
  32. String isInstallerString = VitamioInstaller.checkVitamioInstallation(NetRadioDemoActivity.this);//检查插件是否安装成功,这里是一个费时操作,应该启新线程处理,作为一个demo我就不做了
  33. Log.i("tag",isInstallerString); //插件安装成功后,Log中显示插件名称
  34. if(isInstallerString!=null){
  35. Toast.makeText(NetRadioDemoActivity.this, "已安装正确版本Vitamio!", Toast.LENGTH_LONG).show();        
  36. startActivity(intent);//开启收听界面
  37. }else{
  38. Toast.makeText(NetRadioDemoActivity.this, "没有匹配的Vitamio!", Toast.LENGTH_LONG).show();
  39. finish();//没有插件安装失败,则结束程序
  40. }
  41. } catch (VitamioNotCompatibleException e) {
  42. e.printStackTrace();
  43. } catch (VitamioNotFoundException e) {
  44. e.printStackTrace();
  45. }
  46. }
  47. });
  48. this.addContentView(btnCheck, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
  49. }
  50. }
复制代码
第二个activity,主要负责播放PlayerActivity
  1. package com.netradiodemo.compnents;

  2. import io.vov.vitamio.MediaPlayer;
  3. import io.vov.vitamio.VitamioInstaller.VitamioNotCompatibleException;
  4. import io.vov.vitamio.VitamioInstaller.VitamioNotFoundException;
  5. import io.vov.vitamio.widget.MediaController;
  6. import java.io.IOException;
  7. import android.app.Activity;
  8. import android.os.Bundle;
  9. import android.view.View;
  10. import android.widget.LinearLayout.LayoutParams;
  11. import com.netradiodemo.R;

  12. public class PlayerActivity extends Activity {
  13. MediaPlayer mPlayer;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. setContentView(R.layout.play_page);
  17. MediaController controller = new MediaController(this);//创建控制对象
  18. this.addContentView(controller, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
  19. String path = "mms://ting.mop.com/mopradio";//猫扑电台地址,这里可以添加自己的喜欢的电台地址,mms协议的
  20. try {
  21. mPlayer = new MediaPlayer(this);//播放流媒体的对象
  22. mPlayer.setDataSource(path);//设置流媒体的数据源
  23. mPlayer.prepare();
  24. } catch (VitamioNotCompatibleException e) {
  25. e.printStackTrace();
  26. } catch (VitamioNotFoundException e) {
  27. e.printStackTrace();
  28. } catch (IllegalArgumentException e) {
  29. e.printStackTrace();
  30. } catch (IllegalStateException e) {
  31. e.printStackTrace();
  32. } catch (IOException e) {
  33. e.printStackTrace();
  34. }
  35. super.onCreate(savedInstanceState);
  36. }
  37. public void doStart(View view){
  38. mPlayer.start();//开始播放
  39. }
  40. public void doStop(View view){
  41. mPlayer.stop();//停止播放
  42. }
  43. }
复制代码
完成,猫扑电台悦耳的声音从我的手机里播放出来啦。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入eoe

x

本帖被以下淘专辑推荐:

该用户从未签到

1

主题

256

帖子

94

e币
发表于 2013-12-30 11:06:19 | 显示全部楼层

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

0

主题

17

帖子

5

e币
发表于 2013-12-9 16:48:04 | 显示全部楼层
还不错的说 ,现在这个玩意儿好像要收费了呢

该用户从未签到

3

主题

253

帖子

128

e币
发表于 2013-12-6 14:23:12 | 显示全部楼层
dddddddddddddddddddddddddd

该用户从未签到

0

主题

671

帖子

1873

e币
发表于 2012-6-27 10:44:02 | 显示全部楼层
不错啊

该用户从未签到

12

主题

567

帖子

381

e币
发表于 2012-6-27 10:45:51 | 显示全部楼层
工程可以打包下嘛~

签到天数: 3 天

连续签到: 2 天

[LV.2]偶尔看看I

0

主题

90

帖子

596

e币
发表于 2012-6-27 10:52:52 | 显示全部楼层
先留个脚印,到时候过来再看,顶个

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

0

主题

621

帖子

812

e币
发表于 2012-6-27 10:52:58 | 显示全部楼层
研究下

签到天数: 7 天

连续签到: 1 天

[LV.3]偶尔看看II

3

主题

408

帖子

3026

e币
发表于 2012-6-27 12:44:14 | 显示全部楼层
en  研究下

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

59

主题

1527

帖子

1178

e币
QQ认证
发表于 2012-6-27 12:53:57 | 显示全部楼层
那个插件 是什么东西 用后用安装不啊

点评

可以学习一下代码 不一定非得看结果的  详情 回复 发表于 2012-6-27 14:27

该用户从未签到

1

主题

89

帖子

887

e币
发表于 2012-6-27 13:18:32 | 显示全部楼层
老早的文章了,并且不利于推广。

点评

嗯 谢谢提醒 这个我就是感觉代码还行 论坛上的这方面的东西还是太少 所以我弄到论坛上来了  详情 回复 发表于 2012-6-27 14:27

该用户从未签到

16

主题

1610

帖子

3162

e币
QQ认证
发表于 2012-6-27 13:18:51 | 显示全部楼层
不错

该用户从未签到

12

主题

504

帖子

1428

e币
发表于 2012-6-27 14:25:17 | 显示全部楼层
研究一下

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

507

主题

2909

帖子

1万

e币
社区贡献者QQ认证
 楼主| 发表于 2012-6-27 14:27:40 | 显示全部楼层
脸上一点黑 发表于 2012-6-27 13:18
老早的文章了,并且不利于推广。

嗯  谢谢提醒  这个我就是感觉代码还行   论坛上的这方面的东西还是太少   所以我弄到论坛上来了

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

507

主题

2909

帖子

1万

e币
社区贡献者QQ认证
 楼主| 发表于 2012-6-27 14:27:51 | 显示全部楼层
Android搞死你 发表于 2012-6-27 12:53
那个插件 是什么东西 用后用安装不啊

  可以学习一下代码  不一定非得看结果的

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

507

主题

2909

帖子

1万

e币
社区贡献者QQ认证
 楼主| 发表于 2012-6-27 14:29:04 | 显示全部楼层
shenyanjia 发表于 2012-6-27 14:25
研究一下

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

507

主题

2909

帖子

1万

e币
社区贡献者QQ认证
 楼主| 发表于 2012-6-27 14:29:14 | 显示全部楼层
ctfzh 发表于 2012-6-27 13:18
不错

该用户从未签到

7

主题

151

帖子

527

e币
社区贡献者
发表于 2012-6-27 14:33:31 | 显示全部楼层
主要归功于Vitamio啊
*滑动验证:
您需要登录后才可以回帖 登录 | 加入eoe

本版积分规则

推荐阅读
赞助商们

QQ|联系我们|小黑屋|手机版|eoe 移动开发者论坛 ( 京ICP备11018032 京公网安11010802020210  

GMT+8, 2017-8-21 10:34 , Processed in 0.625634 second(s), 51 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表
关闭

扫一扫 关注eoe官方微信