栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

安卓音乐播放器+心情记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

安卓音乐播放器+心情记

心情记
MainActivity
package com.example.psyc_diary;
public class MainActivity extends AppCompatActivity {
    private SQLiteDatabase mDatabase;
    private ListView lv_dailylist;
    private SimpleCursorAdapter mAdapter;
    private String []title;
    private int []id;
   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        lv_dailylist = (ListView) findViewById(R.id.lv_dailylist);
        setSupportActionBar(toolbar);

        mDatabase = new DBHelper(this).getWritableDatabase();
        queryTitle();
        initEvent();
    }

    public void initEvent(){
        final MyBaseAdapter myBaseAdapter=new MyBaseAdapter();
        lv_dailylist.setAdapter(myBaseAdapter);
        lv_dailylist.setOnItemClickListener(new AdapterView.OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView parent, View view,
                                    int position, long id) {
                // TODO Auto-generated method stub
                Bundle bundle = new Bundle();
                bundle.putInt("id", position);
                Intent intent = new Intent(MainActivity.this,DetailActivity.class);
                intent.putExtras(bundle);
                finish();
                startActivity(intent);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_add) {
            Intent intent = new Intent(this, AddActivity.class);
            startActivity(intent);   //startActivity方法
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @SuppressLint("Range")
    private void queryTitle() {
        Cursor cursor1= mDatabase.rawQuery("select count(2) from "+DBHelper.TABLE_NAME,null);
        cursor1.moveToFirst();
        long count = cursor1.getLong(0);
        int num=(int) count;
        title=new String[num];
        id=new int[num];
        cursor1.close();
        Cursor cursor;
        cursor = mDatabase.query(DBHelper.TABLE_NAME,DBHelper.TABLE_COLUMNS,null,null,null,null,null);
        int i=0;
        while (cursor != null && cursor.moveToNext()) {
            id[i]=cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_ID));
            title[i]=cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_TITLE));
            i+=1;
        }
        cursor.close();
    }

    class MyBaseAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            Cursor cursor= mDatabase.rawQuery("select count(2) from "+DBHelper.TABLE_NAME,null);
            cursor.moveToFirst();
            long count = cursor.getLong(0);
            cursor.close();
            int num=(int)count;
            return num;
        }

        @Override
        public Object getItem(int position) { return title[position]; }

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

        @Override
        public View getView(int position, View convertview, ViewGroup parent) {
            View view=View.inflate(MainActivity.this,R.layout.list_item,null);
            TextView tv_title=(TextView)view.findViewById(R.id.tv_title);
            tv_title.setText(title[position]);
            return view;
        }
    }
}
AddActivity
package com.example.psyc_diary;

public class AddActivity extends AppCompatActivity implements View.OnClickListener {
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    private Button btn_sure, btn_cancel;
    private EditText et_title, et_content;
    private SQLiteDatabase mDatabase;
    private int[] idlist;
    private int id;
    private String title, createtime, content, dateStr;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);
        mDatabase = new DBHelper(this).getWritableDatabase();
        initView();
        initEvent();
    }

    public void initView() {
        et_title = (EditText) findViewById(R.id.et_title);
        et_content = (EditText) findViewById(R.id.et_content);
        btn_sure = (Button) findViewById(R.id.btn_sure);
        btn_cancel = (Button) findViewById(R.id.btn_cancel);
    }

    public void initEvent() {
        btn_sure.setOnClickListener(AddActivity.this);
        btn_cancel.setOnClickListener(AddActivity.this);
    }

    @Override
    public void onClick(View view) {
        if (view.getId() == R.id.btn_sure) {
            Toast toast = Toast.makeText(getApplicationContext(), "添加成功", Toast.LENGTH_LONG);
            toast.show();
            Date date = new Date();
            date.getTime();
            dateStr = sdf.format(date);
            title = et_title.getText().toString();
            content = et_content.getText().toString();
            insertData(title, dateStr, content);
            //跳转
            startActivity(new Intent(this, MainActivity.class));
            //跳转完以后关闭本界面
            finish();
        }
        if (view.getId() == R.id.btn_cancel) {
            startActivity(new Intent(this, MainActivity.class));
            finish();
        }
    }

    private void insertData(String title, String createtime, String content) {
        ContentValues contentValues = new ContentValues();
        contentValues.put("title", title);
        contentValues.put("createtime", createtime);
        contentValues.put("content", content);
        mDatabase.insertWithOnConflict(DBHelper.TABLE_NAME,null,contentValues,SQLiteDatabase.CONFLICT_IGNORE);
    }

    @SuppressLint("Range")
    private void queryTitle() {
        Cursor cursor1 = mDatabase.rawQuery("select count(2) from " + DBHelper.TABLE_NAME, null);
        cursor1.moveToFirst();
        long count = cursor1.getLong(0);
        int num = (int) count;
        idlist = new int[num];
        cursor1.close();
        Cursor cursor;
        cursor = mDatabase.query(DBHelper.TABLE_NAME, DBHelper.TABLE_COLUMNS, null, null, null, null, null);
        int i = 0;
        while (cursor != null && cursor.moveToNext()) {
            idlist[i] = cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_ID));
            i += 1;
        }
        id=idlist[num-1];
        cursor.close();
    }
}
Daily
package com.example.psyc_diary;

public class Daily {
    private Integer id;
    private String title;
    private String createtime;
    private String content;

    public Daily(){

    }

    public Daily(Integer id, String title, String createtime, String content){
        this.id=id;
        this.title=title;
        this.createtime=createtime;
        this.content=content;
    }

    public Integer getId() {
        return id;
    }

    public String getContent() {
        return content;
    }

    public String getCreatetime() {
        return createtime;
    }

    public String getTitle() {
        return title;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public void setCreatetime(String createtime) {
        this.createtime = createtime;
    }

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

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

}
DBHelper
package com.example.psyc_diary;

public class DBHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "Database.db";
    private static final int DATABASE_VERSION = 1;
    public static final String TABLE_NAME = "daily";
    public static final String COLUMN_ID = "id";
    public static final String COLUMN_TITLE = "title";
    public static final String COLUMN_CREATETIME = "createtime";
    public static final String COLUMN_CONTENT = "content";
    public static final String[] TABLE_COLUMNS = {
            COLUMN_ID,
            COLUMN_TITLE,
            COLUMN_CREATETIME,
            COLUMN_CONTENT
    };

    public DBHelper(Context context) {
        this(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, DATABASE_NAME, factory, DATABASE_VERSION);
    }

    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
        super(context, DATABASE_NAME, factory, DATABASE_VERSION, errorHandler);
    }

    @Override
    public void onCreate(SQLiteDatabase database) {
        String sql = "CREATE TABLE IF NOT EXISTS "
                + TABLE_NAME + " ( "
                + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                + COLUMN_TITLE + " VARCHAr(32),"
                + COLUMN_CREATETIME + " VARCHAr(32), "
                + COLUMN_CONTENT + " VARCHAr(200)) ";

        database.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
    }
}

DetailActivity
package com.example.psyc_diary;
public class DetailActivity extends AppCompatActivity implements View.OnClickListener {
    private Button btn_back,btn_delete;
    private TextView tv_title,tv_createtime,tv_content;
    private SQLiteDatabase mDatabase;
    private int []idlist;
    private int id;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        mDatabase = new DBHelper(this).getWritableDatabase();
        queryTitle();
        initView();
        initEvent();
    }

    public void initView(){
        tv_title = (TextView) findViewById(R.id.tv_title);
        tv_createtime = (TextView) findViewById(R.id.tv_createtime);
        tv_content = (TextView) findViewById(R.id.tv_content);
        btn_back = (Button) findViewById(R.id.btn_back);
        btn_back.setOnClickListener(DetailActivity.this);
        btn_delete = (Button) findViewById(R.id.btn_delete);
    }

    @SuppressLint("Range")
    public void initEvent(){
        Bundle b=getIntent().getExtras();
        //获取Bundle的信息
        int pos=b.getInt("id");
        id=idlist[pos];
        System.out.println("id:"+id);
        Cursor cursor= mDatabase.query(DBHelper.TABLE_NAME,DBHelper.TABLE_COLUMNS,"id=?",new String[]{id+""},null,null,null);
        while (cursor != null && cursor.moveToNext()) {
            tv_title.setText(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_TITLE)));
            tv_createtime.setText(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_CREATETIME)));
            tv_content.setText(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_CONTENT)));
        }
        cursor.close();
        btn_delete.setOnClickListener(DetailActivity.this);
    }

    @Override
    public void onClick(View view) {
        if (view.getId() == R.id.btn_back) {
            startActivity(new Intent(this, MainActivity.class));
            finish();
        }
        if (view.getId() == R.id.btn_delete) {
            deleteData(id);
            startActivity(new Intent(this, MainActivity.class));
            finish();
        }
    }

    @SuppressLint("Range")
    private void queryTitle() {
        Cursor cursor1= mDatabase.rawQuery("select count(2) from "+DBHelper.TABLE_NAME,null);
        cursor1.moveToFirst();
        long count = cursor1.getLong(0);
        int num=(int) count;
        idlist=new int[num];
        cursor1.close();
        Cursor cursor;
        cursor = mDatabase.query(DBHelper.TABLE_NAME,DBHelper.TABLE_COLUMNS,null,null,null,null,null);
        int i=0;
        while (cursor != null && cursor.moveToNext()) {
            idlist[i]=cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_ID));
            i+=1;
        }
        cursor.close();
    }

    private void deleteData(int id) {
        mDatabase.delete(DBHelper.TABLE_NAME,"id = ?",new String[]{id+""});
    }

}

音乐播放器
MainActivity
package com.example.psyc_app;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    ImageView nextIv,playIv,lastIv;
    TextView singerTv,songTv;
    RecyclerView musicRv;
   // 数据源
    ListmDatas;
    private LocalMusicAdapter adapter;

    //记录当前正在播放的音乐的位置
    private int position;
    int currentPlayPosition = -1;
    //记录暂停音乐进度条的位置
    int currentPausePositionSong = 0;

    MediaPlayer mediaPlayer;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        mediaPlayer = new MediaPlayer();
        mDatas = new ArrayList<>();
        //  创建适配器对象
        adapter = new LocalMusicAdapter(this,mDatas);
        musicRv.setAdapter(adapter);
        //  设置布局管理器
        LinearLayoutManager layoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
        musicRv.setLayoutManager(layoutManager);

        // 加载本地数据源
        loadLocalMusicData();

        // 设置每一项的点击事件
        setEventListener();
    }

    private void setEventListener() {
        
        adapter.setOnItemClickListener(new LocalMusicAdapter.OnItemClickListener() {
            @Override
            public void OnItemClick(View view, int position){
                currentPlayPosition = position;
                LocalMusicBean musicBean = mDatas.get(position);
                playMusicInMusicBean(musicBean);

            }
        });
    }

    public void playMusicInMusicBean(LocalMusicBean musicBean) {
        //               设置底部显示的歌手名和歌曲名
        singerTv.setText(musicBean.getSinger());
        songTv.setText(musicBean.getSong());
        stopMusic();

        // 重置多媒体播放器
        mediaPlayer.reset();
        // 设置新的音乐播放路径
        try {
            mediaPlayer.setDataSource(musicBean.getPath());
            playMusic();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    
    private void playMusic(){
        
       if( mediaPlayer != null){
           if (currentPausePositionSong == 0) {
               try {
                   mediaPlayer.prepare();
                   mediaPlayer.start();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
           else{
               //从暂停到播放
               mediaPlayer.seekTo(currentPausePositionSong);
               mediaPlayer.start();
           }

            playIv.setImageResource(R.mipmap.icon_pause);
        }
    }
    private void stopMusic()
    {
        if(mediaPlayer != null ){
            mediaPlayer.pause();
            currentPausePositionSong = 0;

            mediaPlayer.seekTo(currentPausePositionSong);
            mediaPlayer.stop();
            playIv.setImageResource(R.mipmap.icon_play);
        }
    }

    private void pauseMusic()
    {
        if (mediaPlayer!=null) {
            currentPausePositionSong = mediaPlayer.getCurrentPosition();
            mediaPlayer.pause();
            playIv.setImageResource(R.mipmap.icon_play);
        }
    }

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

    @SuppressLint("Range")
    private void loadLocalMusicData(){
        
        // 1.获取ContentReslover对象
       ContentResolver resolver = getContentResolver();
        // 2.获取本地音乐存储的uri
        Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

       // String musicpath="/mnt/sdcard/Music/music/";
        //定义selectionArgs:
        //String[] selectionArgs = {musicpath+"%"};
        Cursor cursor = resolver.query(uri, null,
                null, null, null);
        // 3.开始查询

        // 4.遍历Cursor
        int id = 0;
        while(cursor.moveToNext()){
            @SuppressLint("Range") String song = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
            @SuppressLint("Range") String singer = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
            @SuppressLint("Range") String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM ));
            id++;
            String sid = String.valueOf(id);
            @SuppressLint("Range") 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));
            if(time.equals("04:30")){
                id--;
                continue;
            }else{
                //将一行当中的数据封装到对象当中
                LocalMusicBean localMusicBean = new LocalMusicBean(sid, song, singer, album, time, path);
                mDatas.add(localMusicBean);
            }

        }
        // 提示适配器更新
        adapter.notifyDataSetChanged();
    }
    private void initView(){
        
        nextIv = findViewById(R.id.local_music_bottom_iv_next);
        playIv = findViewById(R.id.local_music_bottom_iv_play);
        lastIv = findViewById(R.id.local_music_bottom_iv_last);
        singerTv = findViewById(R.id.local_music_bottom_tv_singer);
        songTv = findViewById(R.id.local_music_bottom_tv_song);
        musicRv = findViewById(R.id.local_music_rv);
        nextIv.setOnClickListener(this);
        playIv.setOnClickListener(this);
        lastIv.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.local_music_bottom_iv_last:
                if (currentPlayPosition == 0) {
                    Toast.makeText(this,"已经是第一首啦!",Toast.LENGTH_SHORT).show();
                    return;
                }
                currentPlayPosition = currentPlayPosition-1;
                LocalMusicBean lastBean = mDatas.get(currentPlayPosition);
                playMusicInMusicBean(lastBean);
                break;
            case R.id.local_music_bottom_iv_next:
                if (currentPlayPosition == mDatas.size()-1) {
                    Toast.makeText(this,"已经是最后一首啦!",Toast.LENGTH_SHORT).show();
                    return;
                }
                currentPlayPosition = currentPlayPosition+1;
                LocalMusicBean nextBean = mDatas.get(currentPlayPosition);
                playMusicInMusicBean(nextBean);

                break;
            case R.id.local_music_bottom_iv_play:
                if (currentPlayPosition == -1) {
                    Toast.makeText(this,"请选择要播放的音乐",Toast.LENGTH_SHORT).show();
                    return;
                }
                if (mediaPlayer.isPlaying()) {
                    // 处于播放状态 需要暂停音乐
                    pauseMusic();
                }else
                {
                    // 没有播放音乐 点击播放音乐
                    playMusic();
                }

                break;
        }
    }
}
localMusicBean
package com.example.psyc_app;

public class LocalMusicBean {

    private String id;
    private String song;
    private String singer;
    private String album;
    private String duration;
    private String path;

    public LocalMusicBean() {
    }

    public LocalMusicBean(String id, String song, String singer, String album, String duration, String path) {
        this.id = id;
        this.song = song;
        this.singer = singer;
        this.album = album;
        this.duration = duration;
        this.path = path;
    }

    public String getId() {
        return id;
    }

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

    public String getSong() {
        return song;
    }

    public void setSong(String song) {
        this.song = song;
    }

    public String getSinger() {
        return singer;
    }

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

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public String getDuration() {
        return duration;
    }

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

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }
}
LocalMusicAdapter
package com.example.psyc_app;

public class LocalMusicAdapter extends RecyclerView.Adapter {
    Context context;
    ListmDatas;

    OnItemClickListener onItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    public interface OnItemClickListener{
        public void OnItemClick(View view,int position);
    }
    public LocalMusicAdapter(Context context, List mDatas) {
        this.context = context;
        this.mDatas = mDatas;
    }

    @NonNull
    @Override
    public LocalMusicViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.item_local_music,parent,false);
        LocalMusicViewHolder holder = new LocalMusicViewHolder(view);
        return holder;
    }

    @SuppressLint("RecyclerView")
    @Override
    public void onBindViewHolder(@NonNull LocalMusicViewHolder holder, int position) {
        LocalMusicBean musicBean = mDatas.get(position);
        holder.idTv.setText(musicBean.getId());
        holder.songTv.setText(musicBean.getSong());
        holder.singerTv.setText(musicBean.getSinger());
        holder.albumTv.setText(musicBean.getAlbum());
        holder.timeTv.setText(musicBean.getDuration());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onItemClickListener.OnItemClick(v,position);
            }
        });
    }

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

    class LocalMusicViewHolder extends RecyclerView.ViewHolder{
        TextView idTv,songTv,singerTv,albumTv,timeTv;
        public LocalMusicViewHolder(View itemView){
            super(itemView);
            idTv = itemView.findViewById(R.id.item_local_music_num);
            songTv = itemView.findViewById(R.id.item_local_music_song);
            singerTv = itemView.findViewById(R.id.item_local_music_singer);
            albumTv = itemView.findViewById(R.id.item_local_music_album);
            timeTv = itemView.findViewById(R.id.item_local_music_durtion);
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/952938.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号