android程序播放音乐和改成放视频怎么弄,需要在代码中怎么更改在哪里改

android程序播放音乐和改成放视频怎么弄,需要在代码中怎么更改在哪里改,第1张

首先新建一个项目命名为Mp3Demo(这个看个人喜好),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//设置标记,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)

//为每个按钮设置单击事件

start.setOnClickListener(new OnClickListenerStart())

pause.setOnClickListener(new OnClickListenerPause())

stop.setOnClickListener(new OnClickListenerStop())

mp3= new MediaPlayer() //创建一个MediaPlayer对象

//在res下新建一个raw文件夹把一首歌放到此文件夹中并用英文命名

mp3 = MediaPlayer.create(Mp3Demo.this,R.raw.sky)

}

//各按钮单击事件的实现如下

//开始播放

private class OnClickListenerStart implements OnClickListener{

//implementsOnClickListener为实现OnClickListener接口

@Override

//重写onClic事件

public void onClick(View v)

{

//执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容

try

{

if (mp3!=null)

{

mp3.stop()

}

mp3.prepare()//进入到准备状态

mp3.start() //开始播放

state.setText("Playing") //改变输出信息为“Playing”,下同

} catch (Exception e)

{

state.setText(e.toString())//以字符串的形式输出异常

e.printStackTrace() //在控制台(control)上打印出异常

}

}

}

//暂停播放

private class OnClickListenerPause implements OnClickListener{

@Override

public void onClick(View v)

{

try

{

if (flag==false) //若flag为false,则表示此时播放器的状态为正在播放

{

mp3.pause()

flag=true

state.setText("pause")

}

else if(flag==true){

mp3.start() //开始播放

flag=false//重新设置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()

}

}

}

//重写暂停状态事件

protected void onPause(){

try

{

mp3.release() //释放音乐资源

} catch (Exception e)

{

state.setText(e.toString())

e.printStackTrace()

}

super.onPause()

}

}

2.按下来是定义布局文件,代码如下:

xmlns:tools="http://schemas.android.com/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"/>

 在Android平台下,要实现声音的播放是十分容易实现的,只要生成一个MediaPlayer对象,并调用它的相关方法,就能改变对声音播放进行控制。MediaPlayer对象有一下各种状态:

   熟悉了MediaPlayer对象的各种状态后以及转换条件,就能很好的控制媒体播放。

 例如:播放res/raw文件夹中的歌曲十分简单,只需写如下代码:

MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1)

mp.start()

   也可以指定音乐文件的位置来进行播放,例如,在sdcard根目录下有有一首歌曲:test.mp3。则可以这样播放:

        MediaPlayer mp = new MediaPlayer()

       String song = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "test.mp3"

       try {

           mp.setDataSource(song)

           mp.prepare()

           mp.start()

       } catch (Exception e) {

           e.printStackTrace()

       }

建议在播放音乐的时候把MediaPlayer放在Service中,因为如果放在Activity中会使得界面特别卡。而且音乐不能放到后台里播放,一旦退出Activity,音乐就会暂停播放。

可以在Activity中布局相关的界面,例如按钮等。然后通过这个Activitiy来启动这个Service。要通过UI与Service交互,可以通过Intent对象传递消息。更复杂一些,要实现Service向Activity发送消息,并利用这些消息来更新UI,这可以用广播机制,例如告诉Activity是否正在播放,播放进度,当前播放歌曲条目等信息。

例如以下实例代码:

/*Activity中*/

@Override

   public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState)

       setContentView(R.layout.main)

       btnPlay = (Button)findViewById(R.id.btnPlay)

       btnPause = (Button)findViewById(R.id.btnPause)

       btnPlay.setOnClickListener(new OnClickListener() {

           

           @Override

           public void onClick(View v) {

               Intent intent = new Intent(MainActivity.this,SoundService.class)

               intent.putExtra("playing", true)

               startService(intent)

           }

       })

       

       btnPause.setOnClickListener(new OnClickListener() {

           

           @Override

           public void onClick(View v) {

               Intent intent = new Intent(MainActivity.this,SoundService.class)

               intent.putExtra("playing", false)

               startService(intent)

           }

       })

   }

}

播放音乐的Service代码:

package com.yzy.sound

 

import android.app.Service

import android.content.Intent

import android.media.MediaPlayer

import android.os.IBinder

 

public class SoundService extends Service {

   private MediaPlayer mp

 

   @Override

   public void onCreate() {

       super.onCreate()

       mp = MediaPlayer.create(this, R.raw.test)

   }

 

   @Override

   public void onDestroy() {

       super.onDestroy()

       mp.release()

       stopSelf()

   }

 

   @Override

   public int onStartCommand(Intent intent, int flags, int startId) {

       boolean playing = intent.getBooleanExtra("playing", false)

       if (playing) {

           mp.start()

       } else {

           mp.pause()

       }

       return super.onStartCommand(intent, flags, startId)

   }

 

   @Override

   public IBinder onBind(Intent intent) {

       return null

   }

 

}

new一个MediaPlayer mp对象,有个方法:mp.setDataSource(音乐路径),然后mp.prepare()mp.start()想播放apk里面的音乐就mp=MediaPlayer.create(this, R.raw.音乐名), mp.prepare() mp.start()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7798202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存