[Android实例] Android网络收音机项目(内含源码)
2013-05-10 08:37
453 查看
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文件
<?xml version="1.0" encoding="utf-8"?
<manifest xmlns: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"
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);
MediaController controller = new MediaController(this);//创建控制对象
this.addContentView(controller, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
String path = "mms://ting.mop.com/mopradio";//猫扑电台地址,这里可以添加自己的喜欢的电台地址,mms协议的
try {
mPlayer = new MediaPlayer(this);//播放流媒体的对象
mPlayer.setDataSource(path);//设置流媒体的数据源
mPlayer.prepare();
} catch (VitamioNotCompatibleException e) {
e.printStackTrace();
} catch (VitamioNotFoundException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
super.onCreate(savedInstanceState);
}
public void doStart(View view){
mPlayer.start();//开始播放
}
public void doStop(View view){
mPlayer.stop();//停止播放
}
}
复制代码
完成,猫扑电台悦耳的声音从我的手机里播放出来啦。
链接: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文件
<?xml version="1.0" encoding="utf-8"?
<manifest xmlns: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"
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);
MediaController controller = new MediaController(this);//创建控制对象
this.addContentView(controller, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
String path = "mms://ting.mop.com/mopradio";//猫扑电台地址,这里可以添加自己的喜欢的电台地址,mms协议的
try {
mPlayer = new MediaPlayer(this);//播放流媒体的对象
mPlayer.setDataSource(path);//设置流媒体的数据源
mPlayer.prepare();
} catch (VitamioNotCompatibleException e) {
e.printStackTrace();
} catch (VitamioNotFoundException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
super.onCreate(savedInstanceState);
}
public void doStart(View view){
mPlayer.start();//开始播放
}
public void doStop(View view){
mPlayer.stop();//停止播放
}
}
复制代码
完成,猫扑电台悦耳的声音从我的手机里播放出来啦。
相关文章推荐
- [Android实例] Android网络收音机项目(内含源码)
- Android网络收音机项目(源码实例分享)
- Android网络收音机项目(源码实例分享)
- Android网络收音机项目(源码实例分享)
- Android 网络html源码查看器详解及实例
- Android开发 API人脸检测实例教程(内含源码)
- 安卓Android大量项目源码实例喜欢的朋友都拿去吧
- Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)
- Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)
- Android网络收音机项目
- Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)
- 众多Android 开源项目推荐 和分享45个android实例源码,很好很强大
- Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)
- Android网络收音机项目
- Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)
- Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)
- Android网络:HTTP之利用HttpURLConnection访问网页、获取网络图片实例 (附源码)
- [Android实例] Android开发 API人脸检测实例教程(内含源码)
- android小项目源码(源码来源于网络,上百个源码打包分享)
- Android 网络下载 google天气图标下载实例(源码)