ch13.rar

  • alonger
    了解作者
  • Java
    开发工具
  • 14.5MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 0
    下载次数
  • 2021-04-13 17:30
    上传日期
Android範例關於所有music, video , media 的控制項且由淺入深
ch13.rar
内容介绍
package com.ehappy.exvideo; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.Manifest; import android.content.pm.PackageManager; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Build; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import java.io.IOException; public class MainActivity extends AppCompatActivity { private ImageView imgFront, imgStop, imgPlay, imgPause, imgNext, imgEnd; private ListView lstVideo; private TextView txtVideo; private SurfaceView sufVideo; private final String sdPATH= "sdcard/"; //影片名稱 String[] videoname=new String[] {"robot", "post", "boat", "coast", "sea"}; //影片檔案 String[] videofile=new String[] {"robot.3gp", "post.3gp", "boat.3gp", "coast.3gp", "sea.3gp"}; private int cListItem=0; //目前播放影片 private Boolean falgPause=false; //暫停、播放旗標 private MediaPlayer mediaplayer; private SurfaceHolder sufHolder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imgFront=(ImageView)findViewById(R.id.imgFront); imgStop=(ImageView)findViewById(R.id.imgStop); imgPlay=(ImageView)findViewById(R.id.imgPlay); imgPause=(ImageView)findViewById(R.id.imgPause); imgNext=(ImageView)findViewById(R.id.imgNext); imgEnd=(ImageView)findViewById(R.id.imgEnd); lstVideo=(ListView)findViewById(R.id.lstVideo); txtVideo=(TextView)findViewById(R.id.txtVideo); sufVideo=(SurfaceView)findViewById(R.id.sufVideo); imgFront.setOnClickListener(listener); imgStop.setOnClickListener(listener); imgPlay.setOnClickListener(listener); imgPause.setOnClickListener(listener); imgNext.setOnClickListener(listener); imgEnd.setOnClickListener(listener); lstVideo.setOnItemClickListener(lstListener); ArrayAdapter<String> adaSong=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, videoname); lstVideo.setAdapter(adaSong); mediaplayer=new MediaPlayer(); //建立 Surface 相關物件 sufHolder=sufVideo.getHolder(); requestStoragePermission(); } private void requestStoragePermission() { if(Build.VERSION.SDK_INT >= 23) { //Androis 6.0 以上 //判斷是否已取得驗證 int hasPermission = checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE); if(hasPermission != PackageManager.PERMISSION_GRANTED) { //未取得驗證 requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); return; } } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (requestCode == 1) { if (!(grantResults[0] == PackageManager.PERMISSION_GRANTED)) { Toast.makeText(this, "未取得權限!", Toast.LENGTH_SHORT).show(); finish(); //結束應用程式 } } else { super.onRequestPermissionsResult(requestCode, permissions, grantResults); } } private ImageView.OnClickListener listener=new ImageView.OnClickListener() { @Override public void onClick(View v) { switch(v.getId()) { case R.id.imgFront: //上一片 frontVideo(); break; case R.id.imgStop: //停止 if (mediaplayer.isPlaying()) { // 是否正在播放 mediaplayer.reset(); //釋放資源 } break; case R.id.imgPlay: //播放 if(falgPause) { //如果是暫停狀態就繼續播放 mediaplayer.start(); falgPause=false; } else { //非暫停則重新播放 playVideo(sdPATH + videofile[cListItem]); } break; case R.id.imgPause: //暫停 mediaplayer.pause(); falgPause=true; break; case R.id.imgNext: //下一片 nextVideo(); break; case R.id.imgEnd: //結束 mediaplayer.release(); finish(); break; } } }; private ListView.OnItemClickListener lstListener=new ListView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { cListItem = position; //取得點選位置 playVideo(sdPATH + videofile[cListItem]); //播放 } }; private void playVideo(String path) { mediaplayer.reset(); mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaplayer.setDisplay(sufHolder); try { mediaplayer.setDataSource(path); //播放影片路徑 mediaplayer.prepare(); mediaplayer.start(); //開始播放 txtVideo.setText("影片名稱:" + videoname[cListItem]); //更新名稱 mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer arg0) { nextVideo(); //播放完後播下一片 } }); } catch (IOException e) {} falgPause=false; } //下一片 private void nextVideo() { cListItem++; if (cListItem >= lstVideo.getCount()) //若到最後就移到第一片 cListItem = 0; playVideo(sdPATH + videofile[cListItem]); } //上一片/ private void frontVideo() { cListItem--; if (cListItem < 0) cListItem = lstVideo.getCount()-1; //若到第一片就移到最後 playVideo(sdPATH + videofile[cListItem]); } }
评论
    相关推荐
    • android开发
      很好的android开发技巧,让你更好的理解android开发过程遇到的问题
    • Android 开发
      Android 开发
    • Android开发
      Android手机开发技术(初学者使用)
    • Android开发
      什么是Android,搭建Android开发环境,第一个Android程序
    • android开发
      android develop
    • Android开发
      深入浅出Google Android ANDROID开发,移动开发
    • android开发
      android游戏开发android游戏地图开发。地图编辑器
    • Android开发
      不错的Android开发资料,适合入门。
    • android开发
      一般SDK中都会带有一些示例程序,说明具体用法,Android SDK也是如此。它提供了一些ApiDemo示例,详细说明了Android中主要API
    • android 开发
      Android开发技巧总汇及源代码 Android开发技巧总汇及源代码