跳转页面,跳转到相对页面中
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'
}