一 在Applet中播放聲音
我們提供的服務(wù)有:做網(wǎng)站、網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、陸港ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的陸港網(wǎng)站制作公司
播放聲音是java對(duì)多媒體的支持一個(gè)重要部分.
現(xiàn)今流行的聲音格式有wav,mid,au為擴(kuò)展名的聲音文件。
而java現(xiàn)主要支持以au為名的聲音。
在Applet中專門提供了類AudioClip來對(duì)聲音的支持。
由于Applet的多媒體功能書上都有很清晰的介紹也很簡單。
例子:
import java.applet.*;
public class sounda extends Applet
{
public static void main (String[] args)
{
6AudioClip ac = getAudioClip(getCodeBase(), "sloop.au");
ac.play();
8// ac.loop();
9// ac.stop();
}
}
上面例子只是很簡單的說明,AudioClip是java中播放類。
java中提供了兩個(gè)很有用的方法getCodeBase(),
getDocumentBase()他們分別返回Applet本身和包含此Applet主頁的URL地址.
上面的sloop.au即我機(jī)器上的聲音文件。
直接使用了AudioClip的play方法來播放聲音。
可測試用Applet的圖像功能加入按鈕。
二 java應(yīng)用程序中的聲音播放
由于在應(yīng)用程序并不支持AudioClip類。
sun公司為應(yīng)用程序中的聲音支持另提供了一個(gè)java新包。
sun.audio在這個(gè)包下面提供了大部分所需要的聲音處理類。
注:sun包下面還有很多很有意思的技術(shù)支持,
如java2D,Tools等,
聲音播放測試
import sun.audio.*;
import java.io.*;
public class Sound
{
public static voie main(String args[])
{
try {
FileInputStream fileau=new FileInputStream("sloop.au");
AudioStream as=new AudioStream(fileau);
AudioPlayer.player.start(as);
}
catch (Exception e) {}
}
}
注:上面兩例都沒有提供相應(yīng)的stop方法,
首先新建一個(gè)項(xiàng)目命名為Mp3Demo(這個(gè)看個(gè)人喜好),Activity命名為Mp3Demo。
1.接下來在Mp3Demo.java中輸入以下代碼:
package?com.example.mp3demo;
import?android.media.MediaPlayer;
import?android.os.Bundle;
import?android.app.Activity;
import?android.view.View;
import?android.view.View.OnClickListener;
import?android.widget.Button;
import?android.widget.TextView;
public?class?Mp3Demo?extends?Activity
{???????//聲名變量
private?Button?start=null;
private?Button?pause=null;
private?Button?stop=null;
private?TextView?state=null;
private?MediaPlayer?mp3;
private?Boolean?flag=false;?//設(shè)置標(biāo)記,false表示正在播放
@Override
protected?void?onCreate(Bundle?savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_mp3_demo);
//取得各按鈕組件
start=(Button)?super.findViewById(R.id.start);
pause=(Button)?super.findViewById(R.id.pause);
stop=(Button)?super.findViewById(R.id.stop);
state=(TextView)super.findViewById(R.id.state);
//為每個(gè)按鈕設(shè)置單擊事件
start.setOnClickListener(new?OnClickListenerStart());
pause.setOnClickListener(new?OnClickListenerPause());
stop.setOnClickListener(new?OnClickListenerStop());
mp3=?new?MediaPlayer();????//創(chuàng)建一個(gè)MediaPlayer對(duì)象
//在res下新建一個(gè)raw文件夾把一首歌放到此文件夾中并用英文命名
mp3?=?MediaPlayer.create(Mp3Demo.this,R.raw.sky);??
}
//各按鈕單擊事件的實(shí)現(xiàn)如下
//開始播放
private?class?OnClickListenerStart?implements?OnClickListener{
//implementsOnClickListener為實(shí)現(xiàn)OnClickListener接口
@Override
//重寫onClic事件
public?void?onClick(View?v)
{???
//執(zhí)行的代碼,其中可能有異常。一旦發(fā)現(xiàn)異常,則立即跳到catch執(zhí)行。否則不會(huì)執(zhí)行catch里面的內(nèi)容?
try
{
if?(mp3!=null)
{
mp3.stop();
}
mp3.prepare();?????????//進(jìn)入到準(zhǔn)備狀態(tài)
mp3.start();??????????//開始播放
state.setText("Playing");??//改變輸出信息為“Playing”,下同
}?catch?(Exception?e)
{
state.setText(e.toString());//以字符串的形式輸出異常
e.printStackTrace();??//在控制臺(tái)(control)上打印出異常
}
}
}
//暫停播放??
private?class?OnClickListenerPause?implements?OnClickListener{
@Override
public?void?onClick(View?v)
{
try
{
if?(flag==false)?//若flag為false,則表示此時(shí)播放器的狀態(tài)為正在播放
{
mp3.pause();
flag=true;
state.setText("pause");
}
else?if(flag==true){
mp3.start();????//開始播放
flag=false;?????//重新設(shè)置flag為false
state.setText("Playing");
}
}?catch?(Exception?e)
{
state.setText(e.toString());
e.printStackTrace();
}
}
}
//停止播放
private?class?OnClickListenerStop?implements?OnClickListener{
@Override
public?void?onClick(View?v)
{
try
{
if?(mp3!=null)
{
mp3.stop();
state.setText("stop");
}
}?catch?(Exception?e)
{
state.setText(e.toString());
e.printStackTrace();
}
}
}
//重寫暫停狀態(tài)事件
protected?void?onPause(){
try
{
mp3.release();???//釋放音樂資源
}?catch?(Exception?e)
{
state.setText(e.toString());
e.printStackTrace();
}
super.onPause();
}
}
2.按下來是定義布局文件,代碼如下:
xmlns:tools=""
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/state"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"?/
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="start"/
android:id="@+id/pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="pause"/
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="stop"/
1、代碼如下
public?class?phone
{
public?void?downloadMusic()
{
System.out.println("download?music?");
}
public?void?playMusic()
{
System.out.println("play?music?");????
}
}
簡單的實(shí)例,代碼如下,純粹JMF加載MP3并播放:
import javax.media.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class PlayerMusic implements ControllerListener {// ControllerListener
// 控制事件
private Player player;
private boolean first, loop;
private String path;
private List mp3List;
private int mp3NO = 0;
PlayerMusic(List mp3List) {
this.mp3List = mp3List;
}
public void start() {
try {
player = Manager.createPlayer(new MediaLocator("file://" + mp3List.get(mp3NO)));
} catch (NoPlayerException ex) {
ex.printStackTrace();
System.out.println("不能播放文件");
return;
} catch (IOException ex) {
ex.printStackTrace();
return;
}
if (player == null) {
System.out.println("播放器為空");
return;
}
first = false;
player.addControllerListener(this);
// 提取媒體內(nèi)容
player.prefetch();
}
public void controllerUpdate(ControllerEvent e) {
// 當(dāng)媒體播放結(jié)束時(shí),循環(huán)播放
if (e instanceof EndOfMediaEvent) {
mp3NO++;
if(mp3NOthis.mp3List.size()){
this.start();
}
return;
}
// 當(dāng)預(yù)提取媒體的內(nèi)容結(jié)束
if (e instanceof PrefetchCompleteEvent) {
player.start();
return;
}
// 當(dāng)實(shí)例化后
if (e instanceof RealizeCompleteEvent) {
// pack(); //執(zhí)行pack()操作
return;
}
}
public static void main(String[] args) {
List mp3List = new ArrayList();
mp3List.add("d://a.mp3");
mp3List.add("d://b.mp3");
mp3List.add("d://c.mp3");
PlayerMusic pm = new PlayerMusic(mp3List);
pm.start();
}
}