Android网络收音机项目

 最近喜欢听广播,但是搜索了一下,苦于网上没有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文件 
Java代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  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.   
  9.     <application android:icon="@drawable/icon" android:label="@string/app_name"  
  10.      android:theme="@android:style/Theme.Black">  
  11.         <activity android:name=".NetRadioDemoActivity"  
  12.                   android:label="@string/app_name">  
  13.             <intent-filter>  
  14.                 <action android:name="android.intent.action.MAIN" />  
  15.                 <category android:name="android.intent.category.LAUNCHER" />  
  16.             </intent-filter>  
  17.         </activity>  
  18.     <activity android:name=".compnents.PlayerActivity"></activity>  
  19.     </application>  
  20. </manifest>  


主页面布局文件main未修改,播放页面布局文件如下play_page 
Java代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  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.   
  3. import io.vov.vitamio.VitamioInstaller;  
  4. import io.vov.vitamio.VitamioInstaller.VitamioNotCompatibleException;  
  5. import io.vov.vitamio.VitamioInstaller.VitamioNotFoundException;  
  6. import android.app.Activity;  
  7. import android.content.Intent;  
  8. import android.os.Bundle;  
  9. import android.util.Log;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.Button;  
  13. import android.widget.LinearLayout.LayoutParams;  
  14. import android.widget.TextView;  
  15. import android.widget.Toast;  
  16. import com.netradiodemo.compnents.PlayerActivity;  
  17.   
  18. public class NetRadioDemoActivity extends Activity {  
  19.     Intent intent ;  
  20.     @Override  
  21.     public void onCreate(Bundle savedInstanceState) {  
  22.         super.onCreate(savedInstanceState);  
  23.         setContentView(R.layout.main);  
  24.         intent = new Intent(this, PlayerActivity.class);  
  25.         TextView tvCheck = new TextView(this);  
  26.         tvCheck.setText("使用前请检查是否安装了Vitamio插件:");  
  27.         this.addContentView(tvCheck, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));  
  28.           
  29.         Button btnCheck = new Button(this);  
  30.         btnCheck.setText("检查");  
  31.         btnCheck.setOnClickListener(new OnClickListener() {  
  32.             @Override  
  33.             public void onClick(View arg0) {  
  34.                 try {  
  35.                     String isInstallerString = VitamioInstaller  
  36.                             .checkVitamioInstallation(NetRadioDemoActivity.this);//检查插件是否安装成功,这里是一个费时操作,应该启新线程处理,作为一个demo我就不做了  
  37.                     Log.i("tag",isInstallerString); //插件安装成功后,Log中显示插件名称  
  38.                     if(isInstallerString!=null){  
  39.                         Toast.makeText(NetRadioDemoActivity.this"已安装正确版本Vitamio!", Toast.LENGTH_LONG).show();   
  40.                         startActivity(intent);//开启收听界面  
  41.                     }else{  
  42.                         Toast.makeText(NetRadioDemoActivity.this"没有匹配的Vitamio!", Toast.LENGTH_LONG).show();  
  43.                         finish();//没有插件安装失败,则结束程序  
  44.                     }  
  45.                 } catch (VitamioNotCompatibleException e) {  
  46.                     e.printStackTrace();  
  47.                 } catch (VitamioNotFoundException e) {  
  48.                     e.printStackTrace();  
  49.                 }  
  50.             }  
  51.         });  
  52.         this.addContentView(btnCheck, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  
  53.     }  
  54. }  


第二个activity,主要负责播放PlayerActivity 
Java代码   收藏代码
  1. package com.netradiodemo.compnents;  
  2.   
  3. import io.vov.vitamio.MediaPlayer;  
  4. import io.vov.vitamio.VitamioInstaller.VitamioNotCompatibleException;  
  5. import io.vov.vitamio.VitamioInstaller.VitamioNotFoundException;  
  6. import io.vov.vitamio.widget.MediaController;  
  7. import java.io.IOException;  
  8. import android.app.Activity;  
  9. import android.os.Bundle;  
  10. import android.view.View;  
  11. import android.widget.LinearLayout.LayoutParams;  
  12.   
  13. import com.netradiodemo.R;  
  14.   
  15. public class PlayerActivity extends Activity {  
  16.     MediaPlayer mPlayer;  
  17.     @Override  
  18.     protected void onCreate(Bundle savedInstanceState) {  
  19.         setContentView(R.layout.play_page);  
  20.         MediaController controller = new MediaController(this);//创建控制对象  
  21.         this.addContentView(controller, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));  
  22.         String path = "mms://ting.mop.com/mopradio";//猫扑电台地址,这里可以添加自己的喜欢的电台地址,mms协议的  
  23.         try {  
  24.             mPlayer = new MediaPlayer(this);//播放流媒体的对象  
  25.             mPlayer.setDataSource(path);//设置流媒体的数据源  
  26.             mPlayer.prepare();  
  27.         } catch (VitamioNotCompatibleException e) {  
  28.             e.printStackTrace();  
  29.         } catch (VitamioNotFoundException e) {  
  30.             e.printStackTrace();  
  31.         } catch (IllegalArgumentException e) {  
  32.             e.printStackTrace();  
  33.         } catch (IllegalStateException e) {  
  34.             e.printStackTrace();  
  35.         } catch (IOException e) {  
  36.             e.printStackTrace();  
  37.         }  
  38.         super.onCreate(savedInstanceState);  
  39.     }  
  40.       
  41.     public void doStart(View view){  
  42.         mPlayer.start();//开始播放  
  43.     }  
  44.     public void doStop(View view){  
  45.         mPlayer.stop();//停止播放  
  46.     }  
  47.       
  48. }  


OK,完成,猫扑电台悦耳的声音从我的手机里播放出来啦。 

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值