diff --git a/src/app/src/main/assets/Floating in the City.mp3 b/src/app/src/main/assets/Floating in the City.mp3 new file mode 100644 index 0000000..68d8bc9 Binary files /dev/null and b/src/app/src/main/assets/Floating in the City.mp3 differ diff --git a/src/app/src/main/assets/Morning Light.mp3 b/src/app/src/main/assets/Morning Light.mp3 new file mode 100644 index 0000000..e45dca5 Binary files /dev/null and b/src/app/src/main/assets/Morning Light.mp3 differ diff --git a/src/app/src/main/assets/Rain, Totoro Forest.mp3 b/src/app/src/main/assets/Rain, Totoro Forest.mp3 new file mode 100644 index 0000000..f1ab5b9 Binary files /dev/null and b/src/app/src/main/assets/Rain, Totoro Forest.mp3 differ diff --git a/src/app/src/main/assets/Windy Hill.mp3 b/src/app/src/main/assets/Windy Hill.mp3 new file mode 100644 index 0000000..f4327f7 Binary files /dev/null and b/src/app/src/main/assets/Windy Hill.mp3 differ diff --git a/src/app/src/main/assets/clock_font.ttf b/src/app/src/main/assets/clock_font.ttf new file mode 100644 index 0000000..8e72232 Binary files /dev/null and b/src/app/src/main/assets/clock_font.ttf differ diff --git a/src/app/src/main/assets/sleep_share.json b/src/app/src/main/assets/sleep_share.json new file mode 100644 index 0000000..7bae2be --- /dev/null +++ b/src/app/src/main/assets/sleep_share.json @@ -0,0 +1,85 @@ +[{ + "articleId": 211, + "articleTitle": "晚上喝茶会影响睡眠吗?", + "articleDesc": "晚上喝茶不一定会失眠,关键看你喝什么茶,以及怎么喝。", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/66/B7/Cvtlp1rUOI6ACsLqAAJNhcvaAB0602.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=211" +}, { + "articleId": 200, + "articleTitle": "什么?你游完泳居然失眠了", + "articleDesc": "运动把整个身体都撩起来了,虽然你已经很想睡了,但是你的身体还HIGH着呢", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/56/46/Cvtlp1qwdjiAD5KnAAKWCh-hvgc718.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=200" +}, { + "articleId": 199, + "articleTitle": "赖床睡不着容易产生垃圾睡眠", + "articleDesc": "垃圾睡眠大多是由于现代电子产品的泛滥和快节奏的生活压力所导致", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/5E/5B/Cvtlhlqwb6SAGz3_AAC37QNGrsw952.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=199" +}, { + "articleId": 192, + "articleTitle": "如何应对剧烈运动后的肌肉酸痛", + "articleDesc": "睡眠是修复损失最好的办法之一,大量的运动过后应该给自己足够的睡眠时间。", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/58/2B/CvtlhlqfiLmABEktAAHuFkm3xKE419.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=192" +}, { + "articleId": 186, + "articleTitle": "为什么喝茶容易失眠?如何喝茶才不会失眠?", + "articleDesc": "喝茶造成失眠的原因并不是绝对的,它与饮茶的时间、饮茶量、不同茶类、不同个体情况等均有关系。", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/4C/BF/Cvtlp1qWSAWABiO4AAMxOXIyCNE762.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=186" +}, { + "articleId": 182, + "articleTitle": "什么时间睡觉最有效?", + "articleDesc": "把握有效的睡眠时间,最好晚上9点钟睡觉,最晚不要超过10点半", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/4F/41/Cvtlhlp4JWaAC2PnAAC37QNGrsw926.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=182" +}, { + "articleId": 180, + "articleTitle": "睡觉超过8小时会早衰?5个「睡眠习惯」让你越睡越不健康!", + "articleDesc": "睡眠太多或太少,都会导致大脑早衰?", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/4F/38/Cvtlhlp4Gr-Ac7hEAADQWHGflL0320.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=180" +}, { + "articleId": 176, + "articleTitle": "什么时间做运动最好?", + "articleDesc": "一般人一天有24小时固定的生理时钟,按照这个生理规律从事运动或身体活动会更有效果", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/4B/C7/CvtlhlpwRiWAfu49AAHuFkm3xKE809.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=176" +}, { + "articleId": 174, + "articleTitle": "冬季赖床5分钟 有利于健康", + "articleDesc": "冬季起床更是宜慢不宜快。尤其脑供血不足、颈椎病患者和心血管疾病患者等更是要注意。", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/42/E3/Cvtlp1pu4gWAY8XoAACzPj4YCVw464.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=174" +}, { + "articleId": 214, + "articleTitle": "我来告诉你为什么有人喝咖啡竟能帮助睡眠?", + "articleDesc": "咖啡能帮助睡眠,可能吗?", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/68/FE/Cvtlp1rX83uADQYZAAJCnnZgH9o020.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=214" +}, { + "articleId": 213, + "articleTitle": "叫醒一个正在梦游的人会发生什么?", + "articleDesc": "据说叫醒正在梦游中的人会变成白痴?是真的吗?", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/70/8C/CvtlhlrWovmAKDJxAAJo-zlPQ3s775.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=213" +}, { + "articleId": 212, + "articleTitle": "失眠,就一定要吃安眠药吗?", + "articleDesc": "如何科学的服用才能达到更好的助眠效果呢?", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/70/01/CvtlhlrVhPWAWCcJAAIUEGxQJNA516.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=212" +}, { + "articleId": 211, + "articleTitle": "晚上喝茶会影响睡眠吗?", + "articleDesc": "晚上喝茶不一定会失眠,关键看你喝什么茶,以及怎么喝。", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/66/B7/Cvtlp1rUOI6ACsLqAAJNhcvaAB0602.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=211" +}, { + "articleId": 210, + "articleTitle": "失眠了?不妨试试音乐疗法", + "articleDesc": "临床实验发现,通过音乐疗法,失眠者往往能够排除心中的杂念,进入音乐的意境中,消除烦恼忧愁,睡眠质量也就提高了。", + "imgUrl": "http://fileserver1.clife.net:8080/group1/M00/6D/4A/CvtlhlrQQHiAbsInAAG95hIe_yg603.jpg", + "articleUrl": "https://cms.clife.cn/manages/series/clifeapp/page/view.html#type=2&id=210" +}] \ No newline at end of file diff --git a/src/app/src/main/assets/いのちの名前.mp3 b/src/app/src/main/assets/いのちの名前.mp3 new file mode 100644 index 0000000..5500087 Binary files /dev/null and b/src/app/src/main/assets/いのちの名前.mp3 differ diff --git a/src/app/src/main/assets/人生的旅途.mp3 b/src/app/src/main/assets/人生的旅途.mp3 new file mode 100644 index 0000000..36625f8 Binary files /dev/null and b/src/app/src/main/assets/人生的旅途.mp3 differ diff --git a/src/app/src/main/assets/匆匆那年.mp3 b/src/app/src/main/assets/匆匆那年.mp3 new file mode 100644 index 0000000..60832fb Binary files /dev/null and b/src/app/src/main/assets/匆匆那年.mp3 differ diff --git a/src/app/src/main/assets/十年.mp3 b/src/app/src/main/assets/十年.mp3 new file mode 100644 index 0000000..7764b81 Binary files /dev/null and b/src/app/src/main/assets/十年.mp3 differ diff --git a/src/app/src/main/assets/千与千寻.mp3 b/src/app/src/main/assets/千与千寻.mp3 new file mode 100644 index 0000000..d13202c Binary files /dev/null and b/src/app/src/main/assets/千与千寻.mp3 differ diff --git a/src/app/src/main/assets/卡农.mp3 b/src/app/src/main/assets/卡农.mp3 new file mode 100644 index 0000000..713184e Binary files /dev/null and b/src/app/src/main/assets/卡农.mp3 differ diff --git a/src/app/src/main/assets/大鱼.mp3 b/src/app/src/main/assets/大鱼.mp3 new file mode 100644 index 0000000..9fe564f Binary files /dev/null and b/src/app/src/main/assets/大鱼.mp3 differ diff --git a/src/app/src/main/assets/天空之城.mp3 b/src/app/src/main/assets/天空之城.mp3 new file mode 100644 index 0000000..746f702 Binary files /dev/null and b/src/app/src/main/assets/天空之城.mp3 differ diff --git a/src/app/src/main/assets/安静的午后.mp3 b/src/app/src/main/assets/安静的午后.mp3 new file mode 100644 index 0000000..7a3334f Binary files /dev/null and b/src/app/src/main/assets/安静的午后.mp3 differ diff --git a/src/app/src/main/assets/山洞水滴声.mp3 b/src/app/src/main/assets/山洞水滴声.mp3 new file mode 100644 index 0000000..02baac0 Binary files /dev/null and b/src/app/src/main/assets/山洞水滴声.mp3 differ diff --git a/src/app/src/main/assets/心的守候.mp3 b/src/app/src/main/assets/心的守候.mp3 new file mode 100644 index 0000000..9a2b74f Binary files /dev/null and b/src/app/src/main/assets/心的守候.mp3 differ diff --git a/src/app/src/main/assets/所念皆星河.mp3 b/src/app/src/main/assets/所念皆星河.mp3 new file mode 100644 index 0000000..d717ad5 Binary files /dev/null and b/src/app/src/main/assets/所念皆星河.mp3 differ diff --git a/src/app/src/main/assets/梦中的婚礼.mp3 b/src/app/src/main/assets/梦中的婚礼.mp3 new file mode 100644 index 0000000..b4152a1 Binary files /dev/null and b/src/app/src/main/assets/梦中的婚礼.mp3 differ diff --git a/src/app/src/main/assets/森林鸟鸣溪流.mp3 b/src/app/src/main/assets/森林鸟鸣溪流.mp3 new file mode 100644 index 0000000..f954148 Binary files /dev/null and b/src/app/src/main/assets/森林鸟鸣溪流.mp3 differ diff --git a/src/app/src/main/assets/温柔の晚风.mp3 b/src/app/src/main/assets/温柔の晚风.mp3 new file mode 100644 index 0000000..5299a72 Binary files /dev/null and b/src/app/src/main/assets/温柔の晚风.mp3 differ diff --git a/src/app/src/main/assets/温柔的流水.mp3 b/src/app/src/main/assets/温柔的流水.mp3 new file mode 100644 index 0000000..83765d0 Binary files /dev/null and b/src/app/src/main/assets/温柔的流水.mp3 differ diff --git a/src/app/src/main/assets/瞬间的永恒.mp3 b/src/app/src/main/assets/瞬间的永恒.mp3 new file mode 100644 index 0000000..b5f75d8 Binary files /dev/null and b/src/app/src/main/assets/瞬间的永恒.mp3 differ diff --git a/src/app/src/main/assets/秋日私语.mp3 b/src/app/src/main/assets/秋日私语.mp3 new file mode 100644 index 0000000..9bdb686 Binary files /dev/null and b/src/app/src/main/assets/秋日私语.mp3 differ diff --git a/src/app/src/main/assets/秋的思念.mp3 b/src/app/src/main/assets/秋的思念.mp3 new file mode 100644 index 0000000..1b74b22 Binary files /dev/null and b/src/app/src/main/assets/秋的思念.mp3 differ diff --git a/src/app/src/main/assets/等你的季节.mp3 b/src/app/src/main/assets/等你的季节.mp3 new file mode 100644 index 0000000..26be4d3 Binary files /dev/null and b/src/app/src/main/assets/等你的季节.mp3 differ diff --git a/src/app/src/main/assets/菊次郎的夏天.mp3 b/src/app/src/main/assets/菊次郎的夏天.mp3 new file mode 100644 index 0000000..f0235d0 Binary files /dev/null and b/src/app/src/main/assets/菊次郎的夏天.mp3 differ diff --git a/src/app/src/main/assets/萤火之森.mp3 b/src/app/src/main/assets/萤火之森.mp3 new file mode 100644 index 0000000..1b5ae31 Binary files /dev/null and b/src/app/src/main/assets/萤火之森.mp3 differ diff --git a/src/app/src/main/assets/青石巷.mp3 b/src/app/src/main/assets/青石巷.mp3 new file mode 100644 index 0000000..a53bcbb Binary files /dev/null and b/src/app/src/main/assets/青石巷.mp3 differ diff --git a/src/app/src/main/assets/青空.mp3 b/src/app/src/main/assets/青空.mp3 new file mode 100644 index 0000000..4ae32d6 Binary files /dev/null and b/src/app/src/main/assets/青空.mp3 differ diff --git a/src/app/src/main/assets/风居住的街道.mp3 b/src/app/src/main/assets/风居住的街道.mp3 new file mode 100644 index 0000000..9d10b53 Binary files /dev/null and b/src/app/src/main/assets/风居住的街道.mp3 differ diff --git a/src/app/src/main/assets/鸟之诗.mp3 b/src/app/src/main/assets/鸟之诗.mp3 new file mode 100644 index 0000000..04e3f5b Binary files /dev/null and b/src/app/src/main/assets/鸟之诗.mp3 differ diff --git a/src/app/src/main/java/com/example/sleep/service/MediaService.java b/src/app/src/main/java/com/example/sleep/service/MediaService.java new file mode 100644 index 0000000..f9d8654 --- /dev/null +++ b/src/app/src/main/java/com/example/sleep/service/MediaService.java @@ -0,0 +1,181 @@ +package com.example.sleep.service; + +import android.app.Service; +import android.content.Intent; +import android.content.res.AssetFileDescriptor; +import android.content.res.AssetManager; +import android.media.MediaPlayer; +import android.os.Binder; +import android.os.IBinder; +import android.widget.TextView; +import android.widget.Toast; + +import java.io.IOException; +import java.util.ArrayList; + +public class MediaService extends Service implements MediaPlayer.OnPreparedListener { + private static final String TAG = "MediaService"; + //初始化MediaPlayer + private MediaPlayer mMediaPlayer; + private MyBinder mBinder = new MyBinder(); + //标记当前歌曲的序号 + private int currentPosition = 0; + //歌曲路径 + private String[] musicPath; + // 用于显示歌曲标题的TextView + private TextView title; + + @Override + public void onCreate() { + super.onCreate(); + // 初始化音乐路径信息 + musicPath = getMusic(); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + // 在服务因异常终止而重新创建时,系统将会重新启动该服务,并且保留其传递给onStartCommand的最后一个Intent + return START_STICKY; + } + + /** + * 获取音乐列表 + * + * @return 音乐列表的String[] + */ + public String[] getMusic() { + AssetManager assetManager = getAssets(); + String[] tmp_files = null; + try { + tmp_files = assetManager.list(""); + } catch (IOException e) { + e.printStackTrace(); + } + ArrayList files_array = new ArrayList<>(); + if (tmp_files != null) { + for (String str : tmp_files) { + if (str.endsWith(".mp3")) { + // 将以".mp3"结尾的文件名添加到列表中 + files_array.add(str); + } + } + } + // 将ArrayList转换为String[] + return files_array.toArray(new String[0]); + } + + /** + * 换首曲子 + */ + private void changeMusic() { + if (currentPosition < 0) { + currentPosition = musicPath.length - 1; + } else if (currentPosition > musicPath.length - 1) { + currentPosition = 0; + } + if (mMediaPlayer == null) { + mMediaPlayer = new MediaPlayer(); + mMediaPlayer.setOnCompletionListener(new CompletionListener()); + } + try { + AssetFileDescriptor fd = getAssets().openFd(musicPath[currentPosition]); + // 更新界面显示的歌曲标题 + title.setText(musicPath[currentPosition].replace(".mp3", "")); + // 切歌之前先重置,释放掉之前的资源 + mMediaPlayer.reset(); + // 设置播放源 + mMediaPlayer.setDataSource(fd.getFileDescriptor(), fd.getStartOffset(), fd.getLength()); + // 开始播放前的准备工作,加载多媒体资源,获取相关信息 + mMediaPlayer.prepare(); + //开始播放 + mMediaPlayer.start(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private final class CompletionListener implements MediaPlayer.OnCompletionListener { + @Override + public void onCompletion(MediaPlayer mp) { + // 播放完成后自动切换到下一首音乐 + ++currentPosition; + changeMusic(); + } + } + + @Override + public IBinder onBind(Intent intent) { + // 返回用于和Activity通信的Binder对象 + return mBinder; + } + + @Override + public boolean onUnbind(Intent intent) { + return super.onUnbind(intent); + } + + @Override + public void onPrepared(MediaPlayer mp) { + try { + // 开始播放 + mp.start(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 用来和Activity通信的Binder + */ + public class MyBinder extends Binder { + // 播放音乐 + public void playMusic() { + changeMusic(); + } + + // 暂停 + public void pauseMusic() { + if (mMediaPlayer.isPlaying()) { + mMediaPlayer.pause(); + } + } + + // 下一首 + public void nextMusic() { + if (mMediaPlayer != null && musicPath.length != 0) { + currentPosition += 1; + changeMusic(); + } else { + Toast.makeText(getApplicationContext(), "未找到音乐", Toast.LENGTH_SHORT).show(); + } + } + + // 上一首 + public void previousMusic() { + if (mMediaPlayer != null && musicPath.length != 0) { + currentPosition -= 1; + changeMusic(); + } else { + Toast.makeText(getApplicationContext(), "未找到音乐", Toast.LENGTH_SHORT).show(); + } + } + + // 关闭播放器 + public void closeMedia() { + if (mMediaPlayer != null) { + mMediaPlayer.stop(); + mMediaPlayer.release(); + } + } + + public void getMusicTitle(TextView musicTitle) { + // 获取用于显示歌曲标题的TextView + title = musicTitle; + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + } +} \ No newline at end of file diff --git a/src/app/src/main/java/com/example/sleep/service/PlayerMusicService.java b/src/app/src/main/java/com/example/sleep/service/PlayerMusicService.java new file mode 100644 index 0000000..df212ac --- /dev/null +++ b/src/app/src/main/java/com/example/sleep/service/PlayerMusicService.java @@ -0,0 +1,66 @@ +package com.example.sleep.service; + +import android.app.Service; +import android.content.Intent; +import android.media.MediaPlayer; +import android.os.IBinder; +import android.support.annotation.Nullable; + +import com.example.sleep.R; + +/** + * 后台播放音乐保活 + */ +public class PlayerMusicService extends Service { + // 媒体播放器对象 + private MediaPlayer mMediaPlayer; + + @Nullable + @Override + public IBinder onBind(Intent intent) { + // 返回空,表示不支持绑定操作 + return null; + } + + @Override + public void onCreate() { + super.onCreate(); + // 创建媒体播放器并加载指定音频文件 + mMediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.silent); + // 设置音乐循环播放 + mMediaPlayer.setLooping(true); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + new Thread(new Runnable() { + @Override + public void run() { + // 在新线程中启动音乐播放 + startPlayMusic(); + } + }).start(); + // 当服务被异常杀死后会自动重启,并且在重启后会保留传递的Intent + return START_STICKY; + } + + private void startPlayMusic() { + if (mMediaPlayer != null) { + // 开始播放音乐 + mMediaPlayer.start(); + } + } + + private void stopPlayMusic() { + if (mMediaPlayer != null) { + // 停止播放音乐 + mMediaPlayer.stop(); + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + stopPlayMusic(); + } +} \ No newline at end of file