Android 播放在线视频及通知

利用SurfaceView和MediaPlay进行播放在线视频,不做其他解释放代码:

界面:

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <EditText android:id="@+id/ev"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:inputType=""
              android:text="http://192.168.0.102/test.3gp"
            />
    <Button android:id="@+id/playvedio"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="播放"/>



    <SurfaceView android:id="@+id/sv"
                 android:layout_height="fill_parent"
                 android:layout_width="fill_parent"/>
</LinearLayout>
Activity:
/**
 * User: Tom
 * Date: 13-5-14
 * Time: 下午9:00
 */
public class PlayOnlineActivity extends Activity {
    private SurfaceView sv;
    private EditText et;
    private Button btnPaly;
    MediaPlayer mediaPlayer = null;
    private SurfaceHolder holder;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.playonline);
        sv = (SurfaceView) findViewById(R.id.sv);
        et = (EditText) findViewById(R.id.ev);
        btnPaly = (Button) findViewById(R.id.playvedio);

        holder = sv.getHolder();
        //surface不自己进行维护自己缓存,而是等待屏幕渲染
        holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

        btnPaly.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    if (mediaPlayer == null) {
                        String vedioPath = et.getText().toString().trim();

                        mediaPlayer = new MediaPlayer();
                        //设置循环播放
                        mediaPlayer.setLooping(true);
                        mediaPlayer.setDataSource(vedioPath);
                        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                        mediaPlayer.setDisplay(holder);

                        mediaPlayer.prepareAsync();
                        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                            @Override
                            public void onPrepared(MediaPlayer mp) {
                                btnPaly.setText("暂停");
                                mediaPlayer.start();
                            }
                        });
                    } else {
                        if (mediaPlayer.isPlaying()) {
                            btnPaly.setText("播放");
                            mediaPlayer.pause();

                        } else {
                            btnPaly.setText("暂停");
                            mediaPlayer.start();
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        });

    }
}

通知的使用方法:

/**
 * User: Tom
 * Date: 13-5-14
 * Time: 下午8:19
 */
public class NotificationActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.notifcation_demo);


        Button btnNotification = (Button) findViewById(R.id.btn_notification);
        btnNotification.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //1、得到Notification服务
                NotificationManager manager = (NotificationManager) NotificationActivity.this.getSystemService(NOTIFICATION_SERVICE);
                //2、进行实例化一个Notification
                Notification notification = new Notification(R.drawable.ic_launcher, "tickettext", System.currentTimeMillis());

                PendingIntent pendingIntent = PendingIntent.getActivity(NotificationActivity.this, 0, new Intent(NotificationActivity.this, ListdemoActivity.class), 0);

                //3、定义Notification处理事件
                notification.setLatestEventInfo(NotificationActivity.this, "notification标题", "notification内容",
                        pendingIntent);

                //4、管理Notification
                manager.notify(0,notification);

            }
        });
    }
}
posted @ 2013-05-14 21:44  zhu_xj  阅读(399)  评论(0编辑  收藏  举报