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文件


<?xml version="1.0" encoding="utf-8"?

<manifest xmlns:android=[http://schemas.android.com/apk/res/android]http://schemas.android.com/apk/res/android]( )

package="com.netradiodemo"

android:versionCode="1"

android:versionName="1.0">

<uses-sdk android:minSdkVersion="10" />

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

<application android:icon="@drawable/icon" android:label="@string/app_name"

android:theme="@android:style/Theme.Black">

<activity android:name=".NetRadioDemoActivity" 

android:label="@string/app_name">

<intent-filter> 

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name=".compnents.PlayerActivity"></activity> 

</application>

</manifest>





主页面布局文件main未修改,播放页面布局文件如下play_page


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



<LinearLayout xmlns:android=[http://schemas.android.com/apk/res/android\]http://schemas.android.com/apk/res/android]( )

android:orientation\="vertical" 

android:layout\_width\="fill\_parent"

android:layout\_height\="fill\_parent" 

>

<Button 

android:id\="@+id/btn\_start"

android:layout\_gravity\="center\_horizontal"

android:layout\_width\="match\_parent" 

android:layout\_height\="wrap\_content" 

android:text\="听猫扑" 

android:textSize\="30sp" 

android:onClick\="doStart" 

/>

<Button 

android:id\="@+id/btn\_stop"

android:layout\_gravity\="center\_horizontal"

android:layout\_width\="match\_parent"

android:layout\_height\="wrap\_content"

android:text\="不听猫扑"

android:textSize\="30sp"

android:onClick\="doStop"

/>

</LinearLayout>

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

Java代码**


package com.netradiodemo;



import io.vov.vitamio.VitamioInstaller;

import io.vov.vitamio.VitamioInstaller.VitamioNotCompatibleException;

import io.vov.vitamio.VitamioInstaller.VitamioNotFoundException;

import android.app.Activity;

import android.content.Intent; 

import android.os.Bundle; 

import android.util.Log; 

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.LinearLayout.LayoutParams;

import android.widget.TextView;

import android.widget.Toast;

import com.netradiodemo.compnents.PlayerActivity;



public class NetRadioDemoActivity extends Activity {

Intent intent ;



@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

intent \= new Intent(this, PlayerActivity.class);

TextView tvCheck \= new TextView(this);

tvCheck.setText("使用前请检查是否安装了Vitamio插件:");

this.addContentView(tvCheck, new LayoutParams(LayoutParams.MATCH\_PARENT, LayoutParams.WRAP\_CONTENT));

Button btnCheck \= new Button(this);

btnCheck.setText("检查");

btnCheck.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View arg0) {



try {

String isInstallerString \= VitamioInstaller.checkVitamioInstallation(NetRadioDemoActivity.this);//检查插件是否安装成功,这里是一个费时操作,应该启新线程处理,作为一个demo我就不做了

Log.i("tag",isInstallerString); //插件安装成功后,Log中显示插件名称

if(isInstallerString!=null){

Toast.makeText(NetRadioDemoActivity.this, "已安装正确版本Vitamio!", Toast.LENGTH\_LONG).show();        

startActivity(intent);//开启收听界面

}else{

Toast.makeText(NetRadioDemoActivity.this, "没有匹配的Vitamio!", Toast.LENGTH\_LONG).show();

finish();//没有插件安装失败,则结束程序

}

} catch (VitamioNotCompatibleException e) {

e.printStackTrace(); 

} catch (VitamioNotFoundException e) {

e.printStackTrace(); 

} 

}

}); 

this.addContentView(btnCheck, new LayoutParams(LayoutParams.WRAP\_CONTENT, LayoutParams.WRAP\_CONTENT));

}

}

第二个activity,主要负责播放PlayerActivity


package com.netradiodemo.compnents;



import io.vov.vitamio.MediaPlayer;

import io.vov.vitamio.VitamioInstaller.VitamioNotCompatibleException;

import io.vov.vitamio.VitamioInstaller.VitamioNotFoundException;

import io.vov.vitamio.widget.MediaController;

import java.io.IOException;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.LinearLayout.LayoutParams;

import com.netradiodemo.R;



public class PlayerActivity extends Activity {

MediaPlayer mPlayer;

@Override

protected void onCreate(Bundle savedInstanceState) {

setContentView(R.layout.play\_page);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值