zoukankan      html  css  js  c++  java
  • android中的多媒体应用MediaPlayer

    MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用MediaPlayer,要视情况选择了。MediaPlayer播放音频比较简单,但是要播放视频就需要SurfaceView。SurfaceView比普通的自定义View更有绘图上的优势,它支持完全的OpenGL ES库。

     

    迷你音乐播放器

    /Chapter11_Media_MiniPlayer/src/com/amaker/test/MainActivity.java

    代码
    package com.amaker.test;

    import android.app.Activity;
    import android.app.AlertDialog;
    import android.media.MediaPlayer;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ImageButton;

    public class MainActivity extends Activity implements MediaPlayer.OnCompletionListener {

    private ImageButton play,pause,stop;
    private MediaPlayer mp;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    play
    = (ImageButton)findViewById(R.id.play);
    pause
    = (ImageButton)findViewById(R.id.pause);
    stop
    = (ImageButton)findViewById(R.id.stop);

    play.setOnClickListener(
    new View.OnClickListener() {
    public void onClick(View view) {
    play();
    }
    });

    pause.setOnClickListener(
    new View.OnClickListener() {
    public void onClick(View view) {
    pause();
    }
    });

    stop.setOnClickListener(
    new View.OnClickListener() {
    public void onClick(View view) {
    stop();
    }
    });

    setup();
    }

    @Override
    public void onDestroy() {
    super.onDestroy();
    if (stop.isEnabled()) {
    stop();
    }
    }

    public void onCompletion(MediaPlayer mp) {
    stop();
    }

    private void play() {
    mp.start();

    play.setEnabled(
    false);
    pause.setEnabled(
    true);
    stop.setEnabled(
    true);
    }

    private void stop() {
    mp.stop();
    pause.setEnabled(
    false);
    stop.setEnabled(
    false);

    try {
    mp.prepare();
    mp.seekTo(
    0);
    play.setEnabled(
    true);
    }
    catch (Throwable t) {
    error(t);
    }
    }

    private void pause() {
    mp.pause();
    play.setEnabled(
    true);
    pause.setEnabled(
    false);
    stop.setEnabled(
    true);
    }

    private void loadClip() {
    try {
    mp
    =MediaPlayer.create(this, R.raw.test);
    mp.setOnCompletionListener(
    this);
    }
    catch (Throwable t) {
    error(t);
    }
    }

    private void setup() {
    loadClip();
    play.setEnabled(
    true);
    pause.setEnabled(
    false);
    stop.setEnabled(
    false);
    }

    private void error(Throwable t) {
    AlertDialog.Builder builder
    =new AlertDialog.Builder(this);
    builder
    .setTitle(
    "报错啦!")
    .setMessage(t.toString())
    .setPositiveButton(
    "确定", null)
    .show();
    }
    }

    /Chapter11_Media_MiniPlayer/res/layout/main.xml

    代码
    <?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">

    <TextView
    android:layout_width="fill_parent"
    android:layout_height
    ="wrap_content"
    android:text
    ="迷你音乐播放器" />

    <LinearLayout
    android:orientation="horizontal" android:layout_width="fill_parent"
    android:layout_height
    ="fill_parent">

    <ImageButton
    android:id="@+id/play"
    android:layout_width
    ="wrap_content"
    android:layout_height
    ="wrap_content"
    android:src
    ="@drawable/play"
    />

    <ImageButton
    android:id="@+id/pause"
    android:layout_width
    ="wrap_content"
    android:layout_height
    ="wrap_content"
    android:src
    ="@drawable/pause"
    />

    <ImageButton
    android:id="@+id/stop"
    android:layout_width
    ="wrap_content"
    android:layout_height
    ="wrap_content"
    android:src
    ="@drawable/stop"
    />
    </LinearLayout>
    </LinearLayout>

    /Chapter11_Media_MiniPlayer/AndroidManifest.xml

    代码
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package
    ="com.amaker.test"
    android:versionCode
    ="1"
    android:versionName
    ="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".MainActivity"
    android:label
    ="@string/app_name">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>

    </application>
    <uses-sdk android:minSdkVersion="3" />

    </manifest>
  • 相关阅读:
    Redis主从复制及主从复制的注意事项
    Redis哨兵(Sentinel)
    Redis慢查询日志(slowlog)
    Memcached缓存雪崩现象
    PHP添加Memcached扩展
    Redis节省空间
    Memcached遇到的问题及解决办法
    C++ explicit关键字学习
    力扣:排序之topK||Kth元素的问题
    软聚类
  • 原文地址:https://www.cnblogs.com/linzheng/p/1942119.html
Copyright © 2011-2022 走看看