获取手机本地的音频、视频

跳转页面,跳转到相对页面中

package com.jj.weektwo;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import com.jj.weektwo.demo01.CamearImageAcivity;
import com.jj.weektwo.demo02.MediaAudioActivity;
import com.jj.weektwo.demo03.LocalVideoActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onClick(View view) {
        Intent intent=new Intent();
        switch (view.getId()){
            case R.id.btn1_camera:
                intent.setClass(this, CamearImageAcivity.class);
                break;
            case R.id.btn2_music:
                intent.setClass(this, MediaAudioActivity.class);
                break;
            case R.id.btn3_video:
                intent.setClass(this, LocalVideoActivity.class);
                break;
        }
        startActivity(intent);
    }
}

   手机中的照相机

package com.jj.weektwo.demo01;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;

import com.jj.weektwo.R;

import java.io.File;

public class CamearImageAcivity extends AppCompatActivity {
   private ImageView iv;
    private String path;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_camear_image_acivity);
        iv=(ImageView)findViewById(R.id.iv);
        path=getExternalCacheDir().getAbsolutePath()+ File.separator+"222.png";
    }

    public void onClick(View view) {
        switch (view.getId()){
            case R.id.camera:
                Intent intent=new Intent();
                intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(intent,200);
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        //判断的是requestCode和resultCode
        if (requestCode==200&&resultCode== Activity.RESULT_OK){
            Bundle bundle=data.getExtras();
            Bitmap bm=(Bitmap)bundle.get("data");
            if (bm!=null){
                iv.setImageBitmap(bm);
            }
        }else if (requestCode==300&&resultCode==Activity.RESULT_OK){
            BitmapFactory.Options options=new BitmapFactory.Options();
            options.inJustDecodeBounds=true;
            BitmapFactory.decodeFile(path,options);
            int outHeight=options.outHeight;
            int outWidth=options.outWidth;
            int sampleHeight=outHeight/200;
            int sampleWidth=outWidth/200;
            int size=Math.max(sampleHeight,sampleWidth);
            options.inSampleSize=size;

            options.inPreferredConfig=Bitmap.Config.RGB_565;
            options.inJustDecodeBounds=false;
            Bitmap bitmap=BitmapFactory.decodeFile(path,options);
            iv.setImageBitmap(bitmap);

        }
    }
}
     
    照相机中的XML文件

  

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_camear_image_acivity"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.jj.weektwo.demo01.CamearImageAcivity">
    <Button
        android:id="@+id/camera"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="跳转照相界面"
        android:layout_marginTop="20dp"
        android:onClick="onClick"/>
    <ImageView
        android:id="@+id/iv"
        android:layout_marginTop="20dp"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:src="@mipmap/ic_launcher"/>
</LinearLayout>
    获取本地音频

     1、获取本地音频的Activity

package com.jj.weektwo.demo02;

import android.content.ContentResolver;
import android.database.Cursor;
import android.icu.text.SimpleDateFormat;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;

import com.jj.weektwo.R;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MediaAudioActivity extends AppCompatActivity {
   private ListView lv;
    private List<MusicInfo> mlist=new ArrayList<>();
    private MusicAdapter adapter;
    private TextView singNameTv,singerTv;
    private MediaPlayer mediaPlayer;
    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_media_audio);
        lv=(ListView)findViewById(R.id.music_lv);
        singerTv=(TextView)findViewById(R.id.music_song);
        singNameTv=(TextView)findViewById(R.id.music_singer);

        adapter=new MusicAdapter(this,mlist);
        lv.setAdapter(adapter);

        LoadLocalData();
        mediaPlayer=new MediaPlayer();
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                MusicInfo info=mlist.get(i);
                singNameTv.setText(info.getSinger());
                singerTv.setText(info.getSingNamer());
                stopMusic();
                mediaPlayer.reset();
                try {
                    mediaPlayer.setDataSource(info.getPath());
                    playMusic();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            private void playMusic() {
                if (mediaPlayer!=null&&!mediaPlayer.isPlaying()){

                    try {
                        mediaPlayer.prepare();
                        mediaPlayer.start();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

            private void stopMusic() {
                if (mediaPlayer!=null&&mediaPlayer.isPlaying()){
                    mediaPlayer.pause();
                    mediaPlayer.seekTo(0);
                    mediaPlayer.stop();
                }
            }
        });
    }


    @RequiresApi(api = Build.VERSION_CODES.N)
    private void LoadLocalData() {
        ContentResolver resolver=getContentResolver();
        Uri musicUri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        Cursor cursor=resolver.query(musicUri,null,null,null,null);
        int id=0;
        while (cursor.moveToNext()){
            String title=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
            String display_name=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
            String singer=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
            String path=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
            long duration=cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
            SimpleDateFormat sdf=new SimpleDateFormat("mm:ss");
            String time=sdf.format(new Date(duration));
            id++;
//            String idStr=id+" ";
            int idStr=id;
            MusicInfo info=new MusicInfo(idStr,title,singer,time,path);
            mlist.add(info);
        }
        adapter.notifyDataSetChanged();
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        stopMusic();
    }

    private void stopMusic() {
        if (mediaPlayer!=null&&mediaPlayer.isPlaying()){
            mediaPlayer.pause();
            mediaPlayer.seekTo(0);
            mediaPlayer.stop();
        }
    }
}
     本机音乐的实体类

package com.jj.weektwo.demo02;

/**
 * Created by jj on 2018/1/6.
 */

public class MusicInfo {
    private int id;
    private String singNamer;
    private String singer;
    private String time;
    private String path;

    public MusicInfo() {
    }

    public MusicInfo(int id, String singNamer, String singer, String time, String path) {
        this.id = id;
        this.singNamer = singNamer;
        this.singer = singer;
        this.time = time;
        this.path = path;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getSingNamer() {
        return singNamer;
    }

    public void setSingNamer(String singNamer) {
        this.singNamer = singNamer;
    }

    public String getSinger() {
        return singer;
    }

    public void setSinger(String singer) {
        this.singer = singer;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    @Override
    public String toString() {
        return "MusicInfo{" +
                "id=" + id +
                ", singNamer='" + singNamer + '\'' +
                ", singer='" + singer + '\'' +
                ", time='" + time + '\'' +
                ", path='" + path + '\'' +
                '}';
    }
}
     获取本机音乐的适配器

package com.jj.weektwo.demo02;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.jj.weektwo.R;

import java.util.List;

/**
 * Created by jj on 2018/1/6.
 */

public class MusicAdapter extends BaseAdapter{
    private Context context;
    private List<MusicInfo> mlist;
    private LayoutInflater inflater;
    public MusicAdapter(Context context, List<MusicInfo> mlist) {
        this.context = context;
        this.mlist = mlist;
        inflater=LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return mlist.size();
    }

    @Override
    public Object getItem(int i) {
        return mlist.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        Hello hello=null;
        if (view==null){
            hello=new Hello();
            view=inflater.inflate(R.layout.item_music,viewGroup,false);
            hello.idTv=(TextView)view.findViewById(R.id.item_num);
            hello.titileTv=(TextView)view.findViewById(R.id.item_sing);
            hello.singerTv=(TextView)view.findViewById(R.id.item_singer);
            hello.timeTv=(TextView)view.findViewById(R.id.item_time);
            view.setTag(hello);
        }else {
            hello= (Hello) view.getTag();
        }
        MusicInfo musicInfo=mlist.get(i);
        hello.idTv.setText(musicInfo.getId()+"");
        hello.titileTv.setText(musicInfo.getSingNamer());
        hello.singerTv.setText(musicInfo.getSinger());
        hello.timeTv.setText(musicInfo.getTime());
        return view;
    }

    class Hello{
        TextView idTv,titileTv,singerTv,timeTv;
    }
}
     本机音乐的XML文件

     

<?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:id="@+id/activity_media_audio"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.jj.weektwo.demo02.MediaAudioActivity">
    <ListView
        android:id="@+id/music_lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="#ddd"
        android:dividerHeight="1dp"></ListView>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:background="#eee"
        android:layout_alignParentBottom="true">
        <ImageView
            android:id="@+id/music_iv"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_centerVertical="true"
            android:layout_marginLeft="20dp"
            android:src="@mipmap/ic_launcher"/>
        <TextView
            android:id="@+id/music_song"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="歌名"
            android:singleLine="true"
            android:ellipsize="end"
            android:textSize="20sp"
            android:textStyle="bold"
            android:layout_toRightOf="@id/music_iv"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="10dp"/>
        <TextView
            android:id="@+id/music_singer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=""
            android:textSize="18sp"
            android:layout_below="@id/music_song"
            android:layout_toRightOf="@id/music_iv"
            android:layout_marginTop="15dp"
            android:layout_marginLeft="15dp"/>
    </RelativeLayout>
</RelativeLayout>
     listview中的子布局

     

<?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="wrap_content">
    <TextView
        android:id="@+id/item_num"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="01"
        android:textSize="20sp"
        android:textColor="@android:color/black"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="20dp"/>
    <TextView
        android:id="@+id/item_sing"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="玫瑰花的葬礼"
        android:textStyle="bold"
        android:singleLine="true"
        android:ellipsize="end"
        android:layout_toRightOf="@id/item_num"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:textSize="20sp"
        android:textColor="@android:color/black"/>
    <TextView
        android:id="@+id/item_singer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="许嵩"
        android:layout_below="@id/item_sing"
        android:layout_marginLeft="140dp"
        android:layout_marginTop="20dp"
        android:textSize="20sp" />
    <TextView
        android:id="@+id/item_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="时间:4:44"
        android:layout_toRightOf="@id/item_singer"
        android:layout_below="@id/item_sing"
        android:layout_marginTop="20dp"
        android:textSize="20dp"
        android:textColor="@android:color/holo_red_dark"
        android:layout_marginLeft="80dp"/>
</RelativeLayout>
    获取本地文件中的视频(里面用的是节操)

    获取视频的Activity

package com.jj.weektwo.demo03;

import android.content.ContentResolver;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import com.jj.weektwo.R;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class LocalVideoActivity extends AppCompatActivity {
    private ListView lv;
    private List<LocalVideoBean> mlist=new ArrayList<>();
    private LocalVideoAdapter adapter;
    private MediaPlayer mediaPlayer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_local_video);
        lv=(ListView)findViewById(R.id.video_lv);

        adapter=new LocalVideoAdapter(mlist,this);
        lv.setAdapter(adapter);
         
        LoadLocalData();
        mediaPlayer=new MediaPlayer();
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                LocalVideoBean bean=mlist.get(i);
                stopMusic();
                mediaPlayer.reset();
                try {
                    mediaPlayer.setDataSource(bean.getPath());
                    playMusic();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            private void playMusic() {
                if (mediaPlayer!=null&&!mediaPlayer.isPlaying()){
                    try {
                        mediaPlayer.prepare();
                        mediaPlayer.start();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

            private void stopMusic() {
                if (mediaPlayer!=null&&mediaPlayer.isPlaying()){
                    mediaPlayer.pause();
                    mediaPlayer.seekTo(0);
                    mediaPlayer.stop();
                }
            }
        });
    }

    private void LoadLocalData() {
        ContentResolver resolver=getContentResolver();
        Uri uri= MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
        Cursor cursor=resolver.query(uri,null,null,null,MediaStore.Video.Media.DEFAULT_SORT_ORDER);
        while (cursor.moveToNext()){
            String title=cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME));
            String path=cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));

           LocalVideoBean bean=new LocalVideoBean(path,title);
            mlist.add(bean);
        }
        adapter.notifyDataSetChanged();

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        stopMusic();
    }

    private void stopMusic() {
        if (mediaPlayer!=null&&!mediaPlayer.isPlaying()){
            mediaPlayer.pause();
            mediaPlayer.seekTo(0);
            mediaPlayer.stop();
        }
    }
}
     获取视频的实体类

    

package com.jj.weektwo.demo03;

/**
 * Created by jj on 2018/1/6.
 */

public class LocalVideoBean {
    private String path;
    private String title;

    public LocalVideoBean() {
    }

    public LocalVideoBean(String path, String title) {
        this.path = path;
        this.title = title;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    @Override
    public String toString() {
        return "LocalVideoBean{" +
                "path='" + path + '\'' +
                ", title='" + title + '\'' +
                '}';
    }
}
   适配器

package com.jj.weektwo.demo03;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;

import com.jj.weektwo.R;

import java.util.List;

import cn.jzvd.JZVideoPlayer;
import cn.jzvd.JZVideoPlayerStandard;

/**
 * Created by jj on 2018/1/6.
 */

public class LocalVideoAdapter extends BaseAdapter {
    private List<LocalVideoBean> mlist;
    private Context context;
   private LayoutInflater inflater;
    public LocalVideoAdapter(List<LocalVideoBean> mlist, Context context) {
        this.mlist = mlist;
        this.context = context;
        inflater=LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return mlist.size();
    }

    @Override
    public Object getItem(int i) {
        return mlist.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        Hello hello=null;
        if (view==null){
            hello=new Hello();
            view=inflater.inflate(R.layout.item_video,viewGroup,false);
            hello.playerStandard=(JZVideoPlayerStandard)view.findViewById(R.id.video_JZ);
            view.setTag(hello);
        }else {
            hello=(Hello)view.getTag();
        }
        LocalVideoBean bean=mlist.get(i);
        hello.playerStandard.setUp(bean.getPath(), JZVideoPlayer.SCREEN_WINDOW_LIST,bean.getTitle());
        return view;
    }

    class Hello{
        JZVideoPlayerStandard playerStandard;
    }
}
     XML文件
<?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:id="@+id/activity_local_video"
    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="com.jj.weektwo.demo03.LocalVideoActivity">
    <ListView
        android:id="@+id/video_lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>
</RelativeLayout>
    子布局

    

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

   <cn.jzvd.JZVideoPlayerStandard
       android:id="@+id/video_JZ"
       android:layout_width="match_parent"
       android:layout_height="220dp"></cn.jzvd.JZVideoPlayerStandard>
</RelativeLayout>

      权限 读写权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jj.weektwo">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".demo01.CamearImageAcivity" />
        <activity android:name=".demo02.MediaAudioActivity" />
        <activity android:name=".demo03.LocalVideoActivity" />
    </application>

</manifest>
     改一下版本号 改为16  22  里面也有饺子的依赖

     

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.2"

    defaultConfig {
        applicationId "com.jj.weektwo"
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    testCompile 'junit:junit:4.12'
    compile 'cn.jzvd:jiaozivideoplayer:6.2.3'

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值