安卓拍照+音乐播放

MainActivity

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //去除标题
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
    }

    public void click(View view) {
        Intent intent=new Intent();
        switch (view.getId()){
            case R.id.button:
                //跳转到拍照界面
                intent.setClass(this,paizhao.class);
                break;
            case R.id.button2:
                //跳转到音乐播放界面
                intent.setClass(this,yinyue.class);
                break;
        }
        startActivity(intent);
    }
}

paizhao

public class paizhao extends AppCompatActivity {
    private ImageView iv;
    //拍的照片要存储的路径
    private String path ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //去除标题
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_paizhao);
        iv = (ImageView) findViewById(R.id.iv);
        //路径
        path = getExternalCacheDir().getAbsolutePath()+ File.separator+"157aa.png";
    }

    public void openCamera(View view) {
        //按钮的点击事件
        Intent intent2 = new Intent();
        intent2.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
        //向意图对象当中传入指定的路劲
        intent2.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path)));
        startActivityForResult(intent2,200);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode==200&resultCode==Activity.RESULT_OK){
            //因为存储的图片过大,导致ImageView不能够显示出来,此时需要对于图片进行处理。
            //图片二次采样
            //1.获得用来设置图片属性的参数
            BitmapFactory.Options options = new BitmapFactory.Options();
            //2.解码边缘
            options.inJustDecodeBounds = true;
            //3.对于图片进行编码的操作
            BitmapFactory.decodeFile(path,options);
            //4.获得原来图片的宽度和高度
            int outHeight = options.outHeight;
            int outWidth = options.outWidth;
            //5.得到压缩的比例 200,200
            int sampleHeight = outHeight/200;
            int sampleWidth = outWidth/200;
            //6.获取较大的压缩比例
            int size = Math.max(sampleHeight,sampleWidth);
            //7.设置图片缩放的比例
            options.inSampleSize = size;
            //8.压缩图片的质量
            options.inPreferredConfig = Bitmap.Config.RGB_565;
            //9.锁定边缘
            options.inJustDecodeBounds = false;
            Bitmap bitmap = BitmapFactory.decodeFile(path,options);
            iv.setImageBitmap(bitmap);
        }
    }
}

yinyue
public class yinyue extends AppCompatActivity implements View.OnClickListener {
    private ListView musicLV;
    private TextView musicnameTv;
    private TextView musicsingerTv;
    private List<MusicInfo>mDatas;
    MusicAdapter adapter ;

    private MediaPlayer mediaPlayer;
    ImageView iv1,iv2,iv3;
    int count=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_yinyue);
        //初始化控件的方法
        initView();
        //加载本地音乐数据的方法
        loadMusicData();
        //初始化多媒体音乐播放器
        mediaPlayer = new MediaPlayer();
        //设置点击监听事件
        musicLV.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                MusicInfo info = mDatas.get(position);
                musicnameTv.setText(info.getMusicName());
                musicsingerTv.setText(info.getMusicSinger());
                //如果正在播放其他音乐,就停止正在播放的音乐
                stopMusic();
                //开始播放当前位置的音乐
                mediaPlayer.reset();

                playMusic(position);
                count=position;

            }
        });
    }
    private void initView() {
        musicLV = (ListView) findViewById(R.id.listView);
        musicnameTv = (TextView) findViewById(R.id.music_name);
        musicsingerTv = (TextView) findViewById(R.id.music_singer);
        iv1= (ImageView) findViewById(R.id.iv1);
        iv2= (ImageView) findViewById(R.id.iv2);
        iv3= (ImageView) findViewById(R.id.iv3);

        mDatas = new ArrayList<>();
        adapter = new MusicAdapter(this, mDatas);
        musicLV.setAdapter(adapter);
        iv1.setOnClickListener(this);
        iv2.setOnClickListener(this);
        iv3.setOnClickListener(this);
    }


    //    获取数据源
    public void loadMusicData(){
        int id = 1;
        List<MusicInfo>list = new ArrayList<>();
        //1.获取ContentResolver对象
        ContentResolver resolver = getContentResolver();
        //2.获取Uri地址
        Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        //3.获取数据
        Cursor cursor = resolver.query(musicUri, null, null, null, null);
        //4.遍历cursor
        while (cursor.moveToNext()) {
            String 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));
            int duration = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
            MusicInfo musicInfo = new MusicInfo(name, singer, path, duration, id);
            //添加对象到集合中
            list.add(musicInfo);
            id++;
        }

        mDatas.addAll(list);
        //数据源发生变化,通知更新
        adapter.notifyDataSetChanged();

    }
    /**
     * 播放音乐
     *1.mediaplayer 不能为null  而且没有在播放中
     * */
    public void playMusic(int position){
        MusicInfo info = mDatas.get(position);
        try {
            mediaPlayer.setDataSource(info.getMusicPath());
            if (mediaPlayer!=null&&!mediaPlayer.isPlaying()) {
                try {
                    mediaPlayer.prepare();
                    mediaPlayer.start();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    /**
     * 停止音乐的方法
     * 1.mediaplayer 不能为null  而且正在播放中...
     * */
    public void stopMusic(){
        if (mediaPlayer!=null&&mediaPlayer.isPlaying()) {
            mediaPlayer.pause();
            mediaPlayer.seekTo(0);
            mediaPlayer.stop();
        }
    }

    @Override
    protected void onStop() {
        super.onStop();
        stopMusic();
//        释放资源
        mediaPlayer.release();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.iv1:
                po();
                break;
            case R.id.iv2:
                pi();
                break;
            case R.id.iv3:
                pu();
                break;
        }
    }
    //下一首
    private void pu() {
        int arrawcount=0;
        if (count!=mDatas.size()-1) {
            arrawcount= count + 1;
            MusicInfo info = mDatas.get(arrawcount);
            musicnameTv.setText(info.getMusicName());
            musicsingerTv.setText(info.getMusicSinger());
            stopMusic();

            mediaPlayer.reset();
        }else {
            arrawcount= 0;
            MusicInfo info = mDatas.get(arrawcount);
            musicnameTv.setText(info.getMusicName());
            musicsingerTv.setText(info.getMusicSinger());
            stopMusic();

            mediaPlayer.reset();

        }
        playMusic(arrawcount);
        count=arrawcount;
    }
    //暂停的方法
    private void pi() {
        if (mediaPlayer!=null&&mediaPlayer.isPlaying()) {
            mediaPlayer.pause();
        }else {
            mediaPlayer.start();
        }
    }
    //上一首
    private void po() {
        int arrawcount=0;
        if (count!=0) {
            arrawcount= count - 1;
            MusicInfo info = mDatas.get(arrawcount);
            musicnameTv.setText(info.getMusicName());
            musicsingerTv.setText(info.getMusicSinger());
            stopMusic();
            mediaPlayer.reset();
        }else {
            arrawcount= mDatas.size()-1;
            MusicInfo info = mDatas.get(arrawcount);
            musicnameTv.setText(info.getMusicName());
            musicsingerTv.setText(info.getMusicSinger());
            stopMusic();
            mediaPlayer.reset();
        }
        playMusic(arrawcount);
        count=arrawcount;
    }
}

MusicAdapter
public class MusicAdapter extends BaseAdapter{
    private Context context;
    private List<MusicInfo>mDatas;

    public MusicAdapter(Context context, List<MusicInfo> mDatas) {
        this.context = context;
        this.mDatas = mDatas;
    }

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

    @Override
    public Object getItem(int position) {
        return mDatas.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if (convertView==null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.list_item_music,null);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }

        MusicInfo musicInfo = mDatas.get(position);
        holder.nameTv.setText(musicInfo.getMusicName());
        holder.idTv.setText(musicInfo.getId()+"");
        holder.singerTv.setText(musicInfo.getMusicSinger());

        SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
        String time = sdf.format(new Date(musicInfo.getDuration()));
        holder.timeTv.setText(time);
        return convertView;
    }


    class ViewHolder {
        TextView nameTv,idTv,singerTv,timeTv;
        public ViewHolder(View itemView){
            nameTv = (TextView) itemView.findViewById(R.id.item_name);
            idTv = (TextView) itemView.findViewById(R.id.item_id);
            singerTv = (TextView) itemView.findViewById(R.id.item_singer);
            timeTv = (TextView) itemView.findViewById(R.id.item_time);

        }

    }
}
MusicInfo
public class MusicInfo {
    private String musicName;
    private String musicSinger;
    private String musicPath;
    private int duration;
    private int id;

    public MusicInfo(String musicName, String musicSinger, String musicPath, int duration, int id) {
        this.musicName = musicName;
        this.musicSinger = musicSinger;
        this.musicPath = musicPath;
        this.duration = duration;
        this.id = id;
    }

    public MusicInfo() {
    }

    public String getMusicName() {
        return musicName;
    }

    public void setMusicName(String musicName) {
        this.musicName = musicName;
    }

    public String getMusicSinger() {
        return musicSinger;
    }

    public void setMusicSinger(String musicSinger) {
        this.musicSinger = musicSinger;
    }

    public String getMusicPath() {
        return musicPath;
    }

    public void setMusicPath(String musicPath) {
        this.musicPath = musicPath;
    }

    public int getDuration() {
        return duration;
    }

    public void setDuration(int duration) {
        this.duration = duration;
    }

    public int getId() {
        return id;
    }

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

//布局 ++++

activity_main

<?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_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/bj"
    tools:context="com.example.zkzice1.MainActivity">

    <Button
        android:text="点击进入音乐"
        android:textSize="24dp"
        android:onClick="click"
        android:textColor="#ffb6b6"
        android:background="@drawable/aaa"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:id="@+id/button2"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:text="点击进入拍照"
        android:onClick="click"
        android:textSize="24dp"
        android:textColor="#ffb6b6"
        android:background="@drawable/aaa"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:id="@+id/button"
        android:layout_below="@+id/button2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
</RelativeLayout>

activity_paizhao

<?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_yinyue"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#fcf5f5"
    tools:context="com.example.zkzice1.yinyue">
    <Button
        android:id="@+id/btn"
        android:background="@drawable/aaa"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:text="打开照相机"
        android:textSize="24dp"
        android:textColor="#ffb6b6"
        android:onClick="openCamera"/>
    <ImageView
        android:id="@+id/iv"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:src="@drawable/aa"
        android:layout_gravity="center_horizontal"/>
</LinearLayout>

activity_yinyue

<?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_main"
    android:orientation="vertical"
    android:background="#ffeeee"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:divider="#ffa7a4"
        android:dividerHeight="1dp">
    </ListView>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:background="#ffd7d7"
        android:layout_alignParentBottom="true">

        <ImageView
            android:id="@+id/music_img"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="10dp"
            android:src="@mipmap/aa"/>



        <TextView
            android:id="@+id/music_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="歌名"
            android:textSize="14sp"
            android:textColor="#ff7777"
            android:layout_marginLeft="10dp"
            android:layout_alignTop="@+id/music_img"
            android:layout_toRightOf="@+id/music_img"
            android:layout_toEndOf="@+id/music_img"
            android:layout_marginStart="10dp" />

        <TextView
            android:id="@+id/music_singer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="歌手名"
            android:textSize="12sp"
            android:textColor="#ff8686"
            android:layout_below="@+id/music_name"
            android:layout_alignLeft="@+id/music_name"
            android:layout_alignStart="@+id/music_name" />

        <ImageView
            android:id="@+id/iv3"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@mipmap/xia"
            android:layout_marginRight="18dp"
            android:layout_marginEnd="18dp"
            android:layout_alignTop="@+id/iv1"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />

        <ImageView
            android:id="@+id/iv2"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@mipmap/zt"
            android:layout_alignTop="@+id/iv3"
            android:layout_toLeftOf="@+id/iv3"
            android:layout_toStartOf="@+id/iv3"
            android:layout_marginRight="16dp"
            android:layout_marginEnd="16dp" />

        <ImageView
            android:id="@+id/iv1"
            android:src="@mipmap/shang"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignBottom="@+id/music_img"
            android:layout_toLeftOf="@+id/iv3"
            android:layout_toStartOf="@+id/iv3"
            android:layout_marginRight="58dp"
            android:layout_marginEnd="58dp" />
    </RelativeLayout>

</LinearLayout>

扫描二维码关注公众号,回复: 1070568 查看本文章
list_item_music

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

    <TextView
        android:id="@+id/item_id"
        android:layout_width="40dp"
        android:layout_height="70dp"
        android:text="1"
        android:gravity="center"
        android:textSize="18sp"
        android:textColor="#000"/>

    <TextView
        android:id="@+id/item_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="李白"
        android:textColor="#000"
        android:textSize="15dp"
        android:layout_marginTop="10dp"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
        android:layout_toRightOf="@id/item_id"/>

    <TextView
        android:id="@+id/item_singer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="李荣浩"
        android:textColor="#333"
        android:textSize="12sp"
        android:paddingLeft="10dp"
        android:layout_below="@id/item_name"
        android:layout_toRightOf="@id/item_id"/>

    <TextView
        android:id="@+id/item_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="4分30秒"
        android:textColor="#000"
        android:textSize="12dp"
        android:layout_alignBottom="@id/item_singer"
        android:layout_marginBottom="5dp"
        android:layout_marginRight="15dp"
        android:layout_alignParentRight="true"/>

</RelativeLayout>

权限 +++++

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<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" />

猜你喜欢

转载自blog.csdn.net/qq_41326326/article/details/78758433