文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android如何选择图片或视频进行循环播放

2023-05-30 19:05

关注

这篇文章主要介绍Android如何选择图片或视频进行循环播放,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

项目要求对本地图片或者视频进行轮播,功能实现完成后发现只是在模拟器上运行ok,后来发现是文件路径的原因。
文件uri的头部有两种一种是以file开头一种是以content开头要进行判断转化

实现如下:

视频 点击吊起文件查看:

private void setVideoPath() {    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);    intent.setType("*    public String getDataColumn(Context context, Uri uri, String selection,                  String[] selectionArgs) {           Cursor cursor = null;          final String column = "_data";          final String[] projection = {column};           try {              cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs,                      null);              if (cursor != null && cursor.moveToFirst()) {                  final int column_index = cursor.getColumnIndexOrThrow(column);                  return cursor.getString(column_index);                }            } finally {              if (cursor != null)                  cursor.close();            }          return null;        }                 public boolean isExternalStorageDocument(Uri uri) {          return "com.android.externalstorage.documents".equals(uri.getAuthority());        }                 public boolean isDownloadsDocument(Uri uri) {          return "com.android.providers.downloads.documents".equals(uri.getAuthority());        }                 public boolean isMediaDocument(Uri uri) {          return "com.android.providers.media.documents".equals(uri.getAuthority());        }

实现视频轮播

public class VideoActivity extends BaseActivity {    @Bind(R.id.sv_ad)   SurfaceView vv;   @Bind(R.id.id_ig_back)   ImageView idIgBack;   private MediaPlayer mPlayer;   private String path;    @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     requestWindowFeature(Window.FEATURE_NO_TITLE);     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,         WindowManager.LayoutParams.FLAG_FULLSCREEN);     setContentView(R.layout.activity_video);     ButterKnife.bind(this);     verifyStoragePermissions(this);     init(); //    init2();   }    private void init2() {     String path = SpUtils.getInstace(VideoActivity.this).getString("videoPath");     Uri uri = Uri.parse("file://" + path);     try {       MediaPlayer mediaPlayer = new MediaPlayer();       mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);       mediaPlayer.setDataSource(getApplicationContext(), uri);       mediaPlayer.prepare();       mediaPlayer.start();     } catch (IOException e) {       e.printStackTrace();     }    }     private void init() {     idIgBack.setOnClickListener(new View.OnClickListener() {       @Override       public void onClick(View v) {         finish();       }     });     vv.getHolder().addCallback(new SurfaceHolder.Callback() {        @Override       public void surfaceDestroyed(SurfaceHolder holder) {         if (mPlayer != null) {           mPlayer.stop();           mPlayer.release();           mPlayer = null;         }       }        @Override       public void surfaceCreated(SurfaceHolder holder) {          path = SpUtils.getInstace(VideoActivity.this).getString("videoPath");          try {           if (mPlayer == null) {             mPlayer = MediaPlayer.create(VideoActivity.this, Uri.parse("file://" + path));           }           if(mPlayer==null){             showToastReal("请在个人中心中选择正确的视频");           }           mPlayer.setDisplay(holder);//将SurfaceHolder关联mediaplayer           mPlayer.setLooping(true);           mPlayer.start();            mPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {              @Override             public boolean onError(MediaPlayer mp, int what,                         int extra) {               // TODO Auto-generated method stub               return false;             }           });         } catch (Exception e) {           e.printStackTrace();         }        }        @Override       public void surfaceChanged(SurfaceHolder holder, int format,                     int width, int height) {        }     });   }    public void onBack(View view) {     finish();   }    @Override   public void loadNetData() {    }    private static final int REQUEST_EXTERNAL_STORAGE = 1;   private static String[] PERMISSIONS_STORAGE = {       Manifest.permission.READ_EXTERNAL_STORAGE,       Manifest.permission.WRITE_EXTERNAL_STORAGE   };        public static void verifyStoragePermissions(Activity activity) {     // Check if we have write permission     int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);       if (permission != PackageManager.PERMISSION_GRANTED) {       // We don't have permission so prompt the user       ActivityCompat.requestPermissions(           activity,           PERMISSIONS_STORAGE,           REQUEST_EXTERNAL_STORAGE       );     }   } }

layout的实现

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="vertical" android:layout_width="match_parent"  android:layout_height="match_parent">  <SurfaceView  android:id="@+id/sv_ad"  android:layout_width="match_parent"  android:layout_height="match_parent" />  <ImageView   android:id="@+id/id_ig_back"   android:layout_width="80dp"   android:layout_height="80dp"    android:layout_marginTop="16dp"   android:padding="16dip"   android:src="@drawable/icon_back_white" /> </RelativeLayout>

以上是“Android如何选择图片或视频进行循环播放”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯