utilize downloaded files within detail activities
This commit is contained in:
parent
5bde02dc8b
commit
395b1227c9
11 changed files with 100 additions and 15 deletions
|
|
@ -2,13 +2,13 @@ package com.dkanada.gramophone.service;
|
|||
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.Looper;
|
||||
|
||||
import com.dkanada.gramophone.App;
|
||||
import com.dkanada.gramophone.BuildConfig;
|
||||
import com.dkanada.gramophone.database.Cache;
|
||||
import com.dkanada.gramophone.model.Song;
|
||||
import com.dkanada.gramophone.util.MusicUtil;
|
||||
|
||||
|
|
@ -50,11 +50,7 @@ public class DownloadService extends Service {
|
|||
try {
|
||||
URL url = new URL(MusicUtil.getDownloadUri(song));
|
||||
URLConnection connection = url.openConnection();
|
||||
|
||||
File root = new File(App.getInstance().getCacheDir(), "music");
|
||||
String path = song.artistName + "/" + song.albumName + "/";
|
||||
String name = song.discNumber + "." + song.trackNumber + " - " + song.title + "." + song.container;
|
||||
File audio = new File(root, path + name);
|
||||
File audio = new File(MusicUtil.getFileUri(song));
|
||||
|
||||
audio.getParentFile().mkdirs();
|
||||
audio.createNewFile();
|
||||
|
|
@ -64,7 +60,7 @@ public class DownloadService extends Service {
|
|||
|
||||
connection.connect();
|
||||
|
||||
byte[] data = new byte[4096];
|
||||
byte[] data = new byte[262144];
|
||||
int count;
|
||||
|
||||
while ((count = input.read(data)) != -1) {
|
||||
|
|
@ -73,6 +69,8 @@ public class DownloadService extends Service {
|
|||
|
||||
input.close();
|
||||
output.close();
|
||||
|
||||
App.getDatabase().cacheDao().insertCache(new Cache(song));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,15 +96,14 @@ public class LocalPlayer implements Playback {
|
|||
|
||||
@Override
|
||||
public void setDataSource(Song song) {
|
||||
String uri = MusicUtil.getTranscodeUri(song);
|
||||
MediaItem mediaItem = exoPlayer.getCurrentMediaItem();
|
||||
|
||||
if (mediaItem != null && mediaItem.playbackProperties.uri.toString().equals(uri)) {
|
||||
if (mediaItem != null && mediaItem.mediaId.equals(song.id)) {
|
||||
return;
|
||||
}
|
||||
|
||||
exoPlayer.clearMediaItems();
|
||||
appendDataSource(MusicUtil.getTranscodeUri(song));
|
||||
appendDataSource(song);
|
||||
exoPlayer.seekTo(0, 0);
|
||||
}
|
||||
|
||||
|
|
@ -114,12 +113,19 @@ public class LocalPlayer implements Playback {
|
|||
exoPlayer.removeMediaItem(1);
|
||||
}
|
||||
|
||||
appendDataSource(MusicUtil.getTranscodeUri(song));
|
||||
appendDataSource(song);
|
||||
}
|
||||
|
||||
private void appendDataSource(String path) {
|
||||
Uri uri = Uri.parse(path);
|
||||
private void appendDataSource(Song song) {
|
||||
File audio = new File(MusicUtil.getFileUri(song));
|
||||
Uri uri = Uri.fromFile(audio);
|
||||
|
||||
if (!song.cache || !audio.exists()) {
|
||||
uri = Uri.parse(MusicUtil.getTranscodeUri(song));
|
||||
}
|
||||
|
||||
MediaItem mediaItem = MediaItem.fromUri(uri);
|
||||
mediaItem = mediaItem.buildUpon().setMediaId(song.id).build();
|
||||
|
||||
exoPlayer.addMediaItem(mediaItem);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,6 +42,10 @@ class UnknownMediaSourceFactory(dataSourceFactory: DataSource.Factory) : MediaSo
|
|||
}
|
||||
|
||||
override fun createMediaSource(mediaItem: MediaItem): MediaSource {
|
||||
if (mediaItem.playbackProperties?.uri.toString().contains("file://")) {
|
||||
return progressiveMediaSource.createMediaSource(mediaItem)
|
||||
}
|
||||
|
||||
val type: String? = runBlocking {
|
||||
httpGet(mediaItem.playbackProperties!!.uri.toString())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue