为了账号安全,请及时绑定邮箱和手机立即绑定

请问谁有Android视频播放器简单源码

求基础源码

正在回答

1 回答

package com.example.mp4;
import java.io.IOException;

import com.example.mp4.R;

import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.MediaController;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.VideoView;

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import android.widget.Button;

public class MainActivity extends Activity{
 private VideoView videoView;
 private LinearLayout controllerLayout;
 private ImageView play_controller_img,screen_img;
 private TextView current_text_tv,time_total_tv;
 private SeekBar play_seek,volume_seek;
 public static final int UPDATE_UI=1;
 private AudioManager mAudioManager;
 //定义音量控制
 /**
  * 定义videoview
  */
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  mAudioManager=(AudioManager) getSystemService(AUDIO_SERVICE);//绑定,获取系统的音频服务
  initUI();
  setPlayerEvent();
  
  String path=Environment.getExternalStorageDirectory().getAbsolutePath()+"/1.mp4";
  /**
   * 本地视频播放
   */
  videoView.setVideoPath(path);
  videoView.start();
  UIHandler.sendEmptyMessage(UPDATE_UI);
  
  /**
   *使MediaController控制视频播放
   */
 // MediaController controller=new MediaController(this);
  /**
   * 设置ViedoView与MediaController建立关联
   */
 // videoView.setMediaController(controller);
  /**
   * 设置MedioController与VideoView建立关联
   */
 // controller.setMediaPlayer(videoView);
 }
 private void updateTextViewWithTimeFormat(TextView textview,int millisecond)
 {
  /**
   * 时间格式换化方法
   */
 
  int second=millisecond/1000;
  int hh=second/3600;
  int mm=second/3600/60;
  int ss=second%60;
  String str=null;
  if(hh!=0)
  {
   //format("")格式化字符变量
   str=String.format("%02d:%02d:%02d",hh,mm,ss);
  }
  else{
   str=String.format("%02d:%02d",mm,ss);
  }
  textview.setText(str);
 }
 private Handler UIHandler=new Handler(){
  public void handleMessage(Message msg){
   super.handleMessage(msg);
   if(msg.what==UPDATE_UI){
   //获取视频当前的播放时间
   int currentPosition=videoView.getCurrentPosition();
   //获取视频播放的总时间
   int totalduration=videoView.getDuration();
   //格式化视频播放时间
   updateTextViewWithTimeFormat(current_text_tv, currentPosition);
   updateTextViewWithTimeFormat(time_total_tv,totalduration);
   play_seek.setMax(totalduration);
   play_seek.setProgress(currentPosition);
   UIHandler.sendEmptyMessageDelayed(UPDATE_UI,500);
   //每隔0.5秒就更新UI
   }
  }
 };
 protected void onPause() {
  super.onPause();
  UIHandler.removeMessages(UPDATE_UI);
 }
 @Override
 protected void onDestroy() {
  // TODO 自动生成的方法存根
  super.onDestroy();
 }
 private void setPlayerEvent() {
  /**
   * 控制视频的播放和暂停的监听
   */
  play_controller_img.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    // TODO 自动生成的方法存根
    if(videoView.isPlaying()){
     play_controller_img.setImageResource(R.drawable.pause_btn_style);
     //暂停播放
     videoView.pause();
     UIHandler.removeMessages(UPDATE_UI);
     
    }
    else
    {
     play_controller_img.setImageResource(R.drawable.pause_btn_style);
     //继续播放
     videoView.start();
     UIHandler.sendEmptyMessage(UPDATE_UI);
    }
   }
  });
  play_seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

   @Override
   public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    // TODO 自动生成的方法存根
    //根据当前进度刷新TextView的值
    updateTextViewWithTimeFormat(current_text_tv,progress);
   }

   @Override
   public void onStartTrackingTouch(SeekBar seekBar) {
    // TODO 自动生成的方法存根
    UIHandler.removeMessages(UPDATE_UI);
   }

   @Override
   public void onStopTrackingTouch(SeekBar seekBar) {
    // TODO 自动生成的方法存根
    int progress=seekBar.getProgress();
    //令视频播放季度遵循seekBar停止拖动的这一刻进度
    videoView.seekTo(progress);
    //让进度重新显示
    UIHandler.sendEmptyMessage(UPDATE_UI);
    //
   }
   
   
  });
  
 
 volume_seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

  public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
   // TODO 自动生成的方法存根
   //设置当前设备的音量
   mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,progress,0);
  }

  public void onStartTrackingTouch(SeekBar seekBar) {
   // TODO 自动生成的方法存根
   
  }

  public void onStopTrackingTouch(SeekBar seekBar) {
   // TODO 自动生成的方法存根
  
  }
  
  
 });
 
}
 /**
  * 初始化UI布局
  */
 private void initUI() {
  // TODO 自动生成的方法存根
  videoView=(VideoView) findViewById(R.id.videoView);
  controllerLayout=(LinearLayout) findViewById(R.id.controllerbar_layout);
  play_controller_img=(ImageView) findViewById(R.id.pause_img);
  screen_img=(ImageView) findViewById(R.id.screen_img);
  current_text_tv=(TextView) findViewById(R.id.time_current_tv);
  time_total_tv=(TextView) findViewById(R.id.time_total_tv);
  play_seek=(SeekBar) findViewById(R.id.play_seek);
  volume_seek=(SeekBar) findViewById(R.id.volume_seek);
  /**
   * 当前设备的最大音量
   */
  
  int streamMaxVolume=mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
  /**
   * 获取设备的最大音量
   */
  int streamVolum=mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  volume_seek.setMax(streamMaxVolume);
  volume_seek.setProgress(streamVolum);
 }
 /**
  *监听屏幕方向的改变   
  */
  
  
 
 @Override
 public void onConfigurationChanged(Configuration newConfig) {
  // TODO 自动生成的方法存根
  super.onConfigurationChanged(newConfig);
 }
 
}

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <VideoView
     
        android:id="@+id/videoView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
     <LinearLayout
        android:id="@+id/controllerbar_layout"
         android:orientation="vertical"
         android:layout_alignParentBottom="true"
      android:layout_width="match_parent"
         android:layout_height="50dp">
         <SeekBar
         android:id="@+id/play_seek"
         android:thumb="@null"   
         android:max="100"
         android:progress="20"
         android:progressDrawable="@drawable/seekbar_style2"
         android:indeterminate="false"
         android:layout_marginLeft="20dp"
         android:layout_marginRight="20dp" 
      android:layout_width="match_parent"
         android:layout_height="5dp" />
         <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="#000"
            android:gravity="center_vertical" >
                  <ImageView
          android:id="@+id/pause_img"
          android:layout_marginLeft="6dp"
          android:src="@drawable/pause_btn_style"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"/>
      <TextView
          android:id="@+id/time_current_tv"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="00:00:00"
          android:textColor="#ffffff"
          android:textSize="10sp"
          android:layout_marginTop="12dp"
          android:layout_marginLeft="32dp"/>
        <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="/"
          android:textColor="#4c4c4c"
          android:textSize="10sp"
            android:layout_marginTop="12dp"
          android:layout_marginLeft="70dp"/>
          <TextView
          android:id="@+id/time_total_tv"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="00:00:00"
          android:textColor="#4c4c4c"
          android:textSize="10sp"
            android:layout_marginTop="12dp"
          android:layout_marginLeft="75dp"/>
         
          <LinearLayout
          
            android:id="@+id/left_layout"
            android:layout_width="150dp"
            android:layout_height="50dp"
             android:orientation="vertical"
            android:layout_alignParentRight="true">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/volumn" />

            <SeekBar
                android:id="@+id/volume_seek"
                android:layout_width="100dp"
                android:layout_height="5dp"
                android:layout_marginLeft="40dp"
                android:layout_marginTop="-15dp"
                android:max="100"
                android:progress="20"
                android:progressDrawable="@drawable/seekbar_style"
                android:thumb="@null" />
 <ImageView
            android:id="@+id/screen_img"
            android:src="@drawable/screen_img"
            android:layout_marginLeft="130dp"
             android:layout_width="20dp"
             android:layout_height="25dp"/>
         </LinearLayout>
  
         </RelativeLayout>


</LinearLayout></RelativeLayout>
 
 


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问谁有Android视频播放器简单源码

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信