mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-28 11:58:23 +01:00
Fix crash when downloading media. Version 4.1.0-beta6.
This commit is contained in:
parent
1a8e888243
commit
121da39592
@ -6,8 +6,8 @@ android {
|
||||
applicationId "ml.docilealligator.infinityforreddit"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 30
|
||||
versionCode 48
|
||||
versionName "4.1.0-beta5"
|
||||
versionCode 49
|
||||
versionName "4.1.0-beta6"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
|
@ -33,12 +33,12 @@ import java.io.OutputStream;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.apis.DownloadFile;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.DownloadProgressResponseBody;
|
||||
import ml.docilealligator.infinityforreddit.events.DownloadMediaEvent;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.apis.DownloadFile;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.events.DownloadMediaEvent;
|
||||
import ml.docilealligator.infinityforreddit.utils.NotificationUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||
import okhttp3.OkHttpClient;
|
||||
@ -133,9 +133,6 @@ public class DownloadMediaService extends Service {
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
((Infinity) getApplication()).getAppComponent().inject(this);
|
||||
|
||||
notificationManager = NotificationManagerCompat.from(this);
|
||||
builder = new NotificationCompat.Builder(this, getNotificationChannelId());
|
||||
|
||||
downloadFinished = false;
|
||||
String fileUrl = intent.getStringExtra(EXTRA_URL);
|
||||
final String[] fileName = {intent.getStringExtra(EXTRA_FILE_NAME)};
|
||||
@ -143,32 +140,8 @@ public class DownloadMediaService extends Service {
|
||||
mediaType = intent.getIntExtra(EXTRA_MEDIA_TYPE, EXTRA_MEDIA_TYPE_IMAGE);
|
||||
mimeType = mediaType == EXTRA_MEDIA_TYPE_VIDEO ? "video/*" : "image/*";
|
||||
|
||||
final DownloadProgressResponseBody.ProgressListener progressListener = new DownloadProgressResponseBody.ProgressListener() {
|
||||
long time = 0;
|
||||
|
||||
@Override public void update(long bytesRead, long contentLength, boolean done) {
|
||||
if (!done) {
|
||||
if (contentLength != -1) {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
if (currentTime - time > 1000) {
|
||||
time = currentTime;
|
||||
updateNotification(0, (int) ((100 * bytesRead) / contentLength), null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
OkHttpClient client = new OkHttpClient.Builder()
|
||||
.addNetworkInterceptor(chain -> {
|
||||
okhttp3.Response originalResponse = chain.proceed(chain.request());
|
||||
return originalResponse.newBuilder()
|
||||
.body(new DownloadProgressResponseBody(originalResponse.body(), progressListener))
|
||||
.build();
|
||||
})
|
||||
.build();
|
||||
|
||||
retrofit = retrofit.newBuilder().client(client).build();
|
||||
notificationManager = NotificationManagerCompat.from(this);
|
||||
builder = new NotificationCompat.Builder(this, getNotificationChannelId());
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
NotificationChannel serviceChannel;
|
||||
@ -201,6 +174,33 @@ public class DownloadMediaService extends Service {
|
||||
);
|
||||
}
|
||||
|
||||
final DownloadProgressResponseBody.ProgressListener progressListener = new DownloadProgressResponseBody.ProgressListener() {
|
||||
long time = 0;
|
||||
|
||||
@Override public void update(long bytesRead, long contentLength, boolean done) {
|
||||
if (!done) {
|
||||
if (contentLength != -1) {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
if (currentTime - time > 1000) {
|
||||
time = currentTime;
|
||||
updateNotification(0, (int) ((100 * bytesRead) / contentLength), null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
OkHttpClient client = new OkHttpClient.Builder()
|
||||
.addNetworkInterceptor(chain -> {
|
||||
okhttp3.Response originalResponse = chain.proceed(chain.request());
|
||||
return originalResponse.newBuilder()
|
||||
.body(new DownloadProgressResponseBody(originalResponse.body(), progressListener))
|
||||
.build();
|
||||
})
|
||||
.build();
|
||||
|
||||
retrofit = retrofit.newBuilder().client(client).build();
|
||||
|
||||
boolean separateDownloadFolder = mSharedPreferences.getBoolean(SharedPreferencesUtils.SEPARATE_FOLDER_FOR_EACH_SUBREDDIT, false);
|
||||
|
||||
retrofit.create(DownloadFile.class).downloadFile(fileUrl).enqueue(new Callback<ResponseBody>() {
|
||||
|
@ -39,12 +39,12 @@ import java.nio.ByteBuffer;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
|
||||
import ml.docilealligator.infinityforreddit.apis.DownloadFile;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.DownloadProgressResponseBody;
|
||||
import ml.docilealligator.infinityforreddit.events.DownloadRedditVideoEvent;
|
||||
import ml.docilealligator.infinityforreddit.Infinity;
|
||||
import ml.docilealligator.infinityforreddit.R;
|
||||
import ml.docilealligator.infinityforreddit.apis.DownloadFile;
|
||||
import ml.docilealligator.infinityforreddit.customtheme.CustomThemeWrapper;
|
||||
import ml.docilealligator.infinityforreddit.events.DownloadRedditVideoEvent;
|
||||
import ml.docilealligator.infinityforreddit.utils.NotificationUtils;
|
||||
import ml.docilealligator.infinityforreddit.utils.SharedPreferencesUtils;
|
||||
import okhttp3.OkHttpClient;
|
||||
@ -95,9 +95,30 @@ public class DownloadRedditVideoService extends Service {
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
((Infinity) getApplication()).getAppComponent().inject(this);
|
||||
|
||||
String videoUrl = intent.getStringExtra(EXTRA_VIDEO_URL);
|
||||
String audioUrl = videoUrl.substring(0, videoUrl.lastIndexOf('/')) + "/DASH_audio.mp4";
|
||||
String subredditName = intent.getStringExtra(EXTRA_SUBREDDIT);
|
||||
final String[] fileNameWithoutExtension = {subredditName + "-" + intent.getStringExtra(EXTRA_POST_ID)};
|
||||
|
||||
notificationManager = NotificationManagerCompat.from(this);
|
||||
builder = new NotificationCompat.Builder(this, NotificationUtils.CHANNEL_ID_DOWNLOAD_REDDIT_VIDEO);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
NotificationChannel serviceChannel;
|
||||
serviceChannel = new NotificationChannel(
|
||||
NotificationUtils.CHANNEL_ID_DOWNLOAD_REDDIT_VIDEO,
|
||||
NotificationUtils.CHANNEL_DOWNLOAD_REDDIT_VIDEO,
|
||||
NotificationManager.IMPORTANCE_LOW
|
||||
);
|
||||
|
||||
notificationManager.createNotificationChannel(serviceChannel);
|
||||
}
|
||||
|
||||
startForeground(
|
||||
NotificationUtils.DOWNLOAD_REDDIT_VIDEO_NOTIFICATION_ID,
|
||||
createNotification(fileNameWithoutExtension[0] + ".mp4")
|
||||
);
|
||||
|
||||
final DownloadProgressResponseBody.ProgressListener progressListener = new DownloadProgressResponseBody.ProgressListener() {
|
||||
long time = 0;
|
||||
|
||||
@ -125,27 +146,6 @@ public class DownloadRedditVideoService extends Service {
|
||||
|
||||
retrofit = retrofit.newBuilder().client(client).build();
|
||||
|
||||
String videoUrl = intent.getStringExtra(EXTRA_VIDEO_URL);
|
||||
String audioUrl = videoUrl.substring(0, videoUrl.lastIndexOf('/')) + "/DASH_audio.mp4";
|
||||
String subredditName = intent.getStringExtra(EXTRA_SUBREDDIT);
|
||||
final String[] fileNameWithoutExtension = {subredditName + "-" + intent.getStringExtra(EXTRA_POST_ID)};
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
NotificationChannel serviceChannel;
|
||||
serviceChannel = new NotificationChannel(
|
||||
NotificationUtils.CHANNEL_ID_DOWNLOAD_REDDIT_VIDEO,
|
||||
NotificationUtils.CHANNEL_DOWNLOAD_REDDIT_VIDEO,
|
||||
NotificationManager.IMPORTANCE_LOW
|
||||
);
|
||||
|
||||
notificationManager.createNotificationChannel(serviceChannel);
|
||||
}
|
||||
|
||||
startForeground(
|
||||
NotificationUtils.DOWNLOAD_REDDIT_VIDEO_NOTIFICATION_ID,
|
||||
createNotification(fileNameWithoutExtension[0] + ".mp4")
|
||||
);
|
||||
|
||||
DownloadFile downloadFile = retrofit.create(DownloadFile.class);
|
||||
|
||||
boolean separateDownloadFolder = sharedPreferences.getBoolean(SharedPreferencesUtils.SEPARATE_FOLDER_FOR_EACH_SUBREDDIT, false);
|
||||
|
@ -41,7 +41,7 @@ public class APIUtils {
|
||||
public static final String AUTHORIZATION_KEY = "Authorization";
|
||||
public static final String AUTHORIZATION_BASE = "bearer ";
|
||||
public static final String USER_AGENT_KEY = "User-Agent";
|
||||
public static final String USER_AGENT = "android:ml.docilealligator.infinityforreddit:v4.1.0-beta5 (by /u/Hostilenemy)";
|
||||
public static final String USER_AGENT = "android:ml.docilealligator.infinityforreddit:v4.1.0-beta6 (by /u/Hostilenemy)";
|
||||
|
||||
public static final String GRANT_TYPE_KEY = "grant_type";
|
||||
public static final String GRANT_TYPE_REFRESH_TOKEN = "refresh_token";
|
||||
|
Loading…
Reference in New Issue
Block a user