心情记
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);
}
}
}