Compare commits

...

16 commits
0.0.2 ... main

Author SHA1 Message Date
0c59f14fd5 new release 2024-08-20 10:06:15 -07:00
6a84adfc13 update readme 2024-08-10 11:44:17 -07:00
4c1b1cbbcf test release 2024-08-10 11:07:17 -07:00
27d415a8d2 test release 2024-08-10 11:04:40 -07:00
19d6e682b8 update images 2024-08-10 07:30:02 -07:00
f5447f84b6 deprecation 2024-01-29 08:42:13 -07:00
34d176efe1 new release 2023-12-07 05:44:20 -07:00
7149bd22fc update readme 2023-10-18 16:47:36 -07:00
b47a7c8ab6 update readme 2023-10-18 16:45:18 -07:00
1454f63ad4 new release 2023-07-28 04:48:00 -07:00
03b5f4f19a new release 2023-07-27 15:32:48 -07:00
29f5aa5b60 new release 2023-06-25 19:10:33 -07:00
d9e22dcc92 update readme 2023-06-22 09:34:17 -07:00
e0a01c29f2 new release 2023-06-07 11:22:26 -07:00
1258781d01 new release 2023-05-05 17:47:10 -07:00
ebd7a94930 new release 2023-04-21 07:16:09 -07:00
39 changed files with 413 additions and 136 deletions

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="11" />
<bytecodeTargetLevel target="17" />
</component>
</project>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetSelector">
<selectionStates>
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
</selectionStates>
</component>
</project>

View file

@ -4,16 +4,26 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="Embedded JDK" />
<option name="externalProjectPath" value="/data/2/asgardius/StudioProjects/s3music" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
<option value="/data/2/asgardius/StudioProjects/s3music" />
<option value="/data/2/asgardius/StudioProjects/s3music/app" />
</set>
</option>
<option name="resolveExternalAnnotations" value="false" />
</GradleProjectSettings>
<GradleProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">
<set>
<option value="/data/2/asgardius/StudioProjects/s3music" />
<option value="/data/2/asgardius/StudioProjects/s3music/app" />
</set>
</option>
<option name="resolveExternalAnnotations" value="false" />
</GradleProjectSettings>
</option>
</component>

11
.idea/migrations.xml Normal file
View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectMigrations">
<option name="MigrateToGradleLocalJavaHome">
<set>
<option value="/data/2/asgardius/StudioProjects/s3music" />
<option value="$PROJECT_DIR$" />
</set>
</option>
</component>
</project>

View file

@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
@ -28,7 +27,7 @@
</map>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

252
.idea/other.xml Normal file
View file

@ -0,0 +1,252 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="direct_access_persist.xml">
<option name="deviceSelectionList">
<list>
<PersistentDeviceSelectionData>
<option name="api" value="27" />
<option name="brand" value="DOCOMO" />
<option name="codename" value="F01L" />
<option name="id" value="F01L" />
<option name="manufacturer" value="FUJITSU" />
<option name="name" value="F-01L" />
<option name="screenDensity" value="360" />
<option name="screenX" value="720" />
<option name="screenY" value="1280" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="28" />
<option name="brand" value="DOCOMO" />
<option name="codename" value="SH-01L" />
<option name="id" value="SH-01L" />
<option name="manufacturer" value="SHARP" />
<option name="name" value="AQUOS sense2 SH-01L" />
<option name="screenDensity" value="480" />
<option name="screenX" value="1080" />
<option name="screenY" value="2160" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="31" />
<option name="brand" value="samsung" />
<option name="codename" value="a51" />
<option name="id" value="a51" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy A51" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="akita" />
<option name="id" value="akita" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 8a" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="samsung" />
<option name="codename" value="b0q" />
<option name="id" value="b0q" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy S22 Ultra" />
<option name="screenDensity" value="600" />
<option name="screenX" value="1440" />
<option name="screenY" value="3088" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="32" />
<option name="brand" value="google" />
<option name="codename" value="bluejay" />
<option name="id" value="bluejay" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 6a" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="29" />
<option name="brand" value="samsung" />
<option name="codename" value="crownqlteue" />
<option name="id" value="crownqlteue" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy Note9" />
<option name="screenDensity" value="420" />
<option name="screenX" value="2220" />
<option name="screenY" value="1080" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="samsung" />
<option name="codename" value="dm3q" />
<option name="id" value="dm3q" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy S23 Ultra" />
<option name="screenDensity" value="600" />
<option name="screenX" value="1440" />
<option name="screenY" value="3088" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="google" />
<option name="codename" value="felix" />
<option name="id" value="felix" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel Fold" />
<option name="screenDensity" value="420" />
<option name="screenX" value="2208" />
<option name="screenY" value="1840" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="google" />
<option name="codename" value="felix_camera" />
<option name="id" value="felix_camera" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel Fold (Camera-enabled)" />
<option name="screenDensity" value="420" />
<option name="screenX" value="2208" />
<option name="screenY" value="1840" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="samsung" />
<option name="codename" value="gts8uwifi" />
<option name="id" value="gts8uwifi" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy Tab S8 Ultra" />
<option name="screenDensity" value="320" />
<option name="screenX" value="1848" />
<option name="screenY" value="2960" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="husky" />
<option name="id" value="husky" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 8 Pro" />
<option name="screenDensity" value="390" />
<option name="screenX" value="1008" />
<option name="screenY" value="2244" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="30" />
<option name="brand" value="motorola" />
<option name="codename" value="java" />
<option name="id" value="java" />
<option name="manufacturer" value="Motorola" />
<option name="name" value="G20" />
<option name="screenDensity" value="280" />
<option name="screenX" value="720" />
<option name="screenY" value="1600" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="google" />
<option name="codename" value="lynx" />
<option name="id" value="lynx" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 7a" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="31" />
<option name="brand" value="google" />
<option name="codename" value="oriole" />
<option name="id" value="oriole" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 6" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="google" />
<option name="codename" value="panther" />
<option name="id" value="panther" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 7" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="samsung" />
<option name="codename" value="q5q" />
<option name="id" value="q5q" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy Z Fold5" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1812" />
<option name="screenY" value="2176" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="30" />
<option name="brand" value="google" />
<option name="codename" value="r11" />
<option name="id" value="r11" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel Watch" />
<option name="screenDensity" value="320" />
<option name="screenX" value="384" />
<option name="screenY" value="384" />
<option name="type" value="WEAR_OS" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="30" />
<option name="brand" value="google" />
<option name="codename" value="redfin" />
<option name="id" value="redfin" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 5" />
<option name="screenDensity" value="440" />
<option name="screenX" value="1080" />
<option name="screenY" value="2340" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="34" />
<option name="brand" value="google" />
<option name="codename" value="shiba" />
<option name="id" value="shiba" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel 8" />
<option name="screenDensity" value="420" />
<option name="screenX" value="1080" />
<option name="screenY" value="2400" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="33" />
<option name="brand" value="google" />
<option name="codename" value="tangorpro" />
<option name="id" value="tangorpro" />
<option name="manufacturer" value="Google" />
<option name="name" value="Pixel Tablet" />
<option name="screenDensity" value="320" />
<option name="screenX" value="1600" />
<option name="screenY" value="2560" />
</PersistentDeviceSelectionData>
<PersistentDeviceSelectionData>
<option name="api" value="29" />
<option name="brand" value="samsung" />
<option name="codename" value="x1q" />
<option name="id" value="x1q" />
<option name="manufacturer" value="Samsung" />
<option name="name" value="Galaxy S20" />
<option name="screenDensity" value="480" />
<option name="screenX" value="1440" />
<option name="screenY" value="3200" />
</PersistentDeviceSelectionData>
</list>
</option>
</component>
</project>

7
.idea/vcs.xml Normal file
View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="/data/2/asgardius/StudioProjects/s3music" vcs="Git" />
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View file

@ -15,13 +15,9 @@ This app is based on Asgardius S3 Manager
This app is a work in progress, so it have some bugs that need to be fixed
[<img src="app-store-badges/fdroid.png"
alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/asgardius.page.s3music/)
[<img src="app-store-badges/play-store.png"
alt="Get it on Google Play"
height="80">](https://play.google.com/store/apps/details?id=asgardius.page.s3music)
height="80">](https://play.google.com/store/apps/details?id=asgardius.page.s3musicmk2)
F-droid release may take a few days to get updated [More info here](https://www.f-droid.org/en/docs/FAQ_-_App_Developers/#ive-published-a-new-release-why-is-it-not-in-the-repository)
@ -29,7 +25,7 @@ F-droid release may take a few days to get updated [More info here](https://www.
You can get help at https://forum.asgardius.company/t/s3-manager
You can find app documentation at https://wiki.asgardius.company/shelves/asgardius-s3-manager-english (english) or https://wiki.asgardius.company/shelves/asgardius-s3-manager-espanol (spanish)
You can find app documentation at https://wiki-en.asgardius.company/index.php?title=Asgardius_S3_Manager_Documentation (english) or https://wiki-es.asgardius.company/index.php?title=Documentacion_Asgardius_S3_Manager (spanish)
Supported languages
@ -48,13 +44,11 @@ Known supported providers
* Scaleway Elements
* Wasabi Cloud
* Backblaze B2
* Cloudflare R2 (partial)
* MinIO **
* Garage **
* Cloudflare R2
* MinIO
* Garage
Known not supported providers
* Google Cloud (Not compatible with S3v4)
* Oracle Cloud (compatibility issues with S3v4)
** Extra steps required (read documentation)

View file

@ -6,11 +6,11 @@ android {
compileSdk 33
defaultConfig {
applicationId "asgardius.page.s3music"
applicationId "asgardius.page.s3musicmk2"
minSdk 21
targetSdk 33
versionCode 5
versionName "0.0.2"
targetSdk 34
versionCode 2
versionName "0.3.1"
setProperty("archivesBaseName", "s3-music-$versionName")
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -29,6 +29,7 @@ android {
buildFeatures {
viewBinding true
}
namespace 'asgardius.page.s3musicmk2'
}
dependencies {
@ -36,13 +37,13 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
def exoplayer_version = "2.18.4"
def exoplayer_version = "2.19.1"
implementation "com.google.android.exoplayer:exoplayer:$exoplayer_version"
implementation "com.google.android.exoplayer:extension-mediasession:$exoplayer_version"
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation"com.otaliastudios:zoomlayout:1.9.0"
// BEGIN AWS DEPENDENCIES
def aws_version = "2.64.0"
def aws_version = "2.76.1"
implementation "com.amazonaws:aws-android-sdk-s3:$aws_version"
implementation ("com.amazonaws:aws-android-sdk-mobile-client:$aws_version") { transitive = true }
// END AWS DEPENDENCIES

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.content.Context;

View file

@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="asgardius.page.s3music" >
android:installLocation="auto"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
tools:node="remove" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<application
android:allowBackup="true"
@ -56,6 +55,7 @@
android:configChanges="orientation|keyboardHidden|screenSize|smallestScreenSize|screenLayout|uiMode|keyboardHidden"
android:exported="false"
android:launchMode="singleTask"
android:documentLaunchMode="always"
android:resizeableActivity="true" />
<activity
android:name=".MainActivity"

View file

@ -9,13 +9,13 @@
<H3>Created by Page Asgardius</H3>
<H3>Libraries used in this app</H3>
<ul>
<li>Amazon Web Services SDK 2.64.0</li>
<li>ExoPlayer 2.18.4</li>
<li>Amazon Web Services SDK 2.76.1</li>
<li>ExoPlayer 2.19.1</li>
<li>Adwaita Icon Theme for GNOME 43</li>
<li>Font Awesome icons</li>
</ul>
<H3>This software released under GNU General Public License 3</H3>
<p>You can find source code at patrice.asgardius.company/gitea/asgardius/s3music
<p>You can find source code at https://git.asgardius.company/asgardius/s3music
<br>
You need to setup a pdf.js server to use pdf viewer. You can use https://office.asgardius.company/pdfjs or setup your own.
<br>

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.annotation.SuppressLint;
import android.content.Context;

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.content.Intent;
import android.os.Bundle;

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.content.DialogInterface;
import android.content.Intent;

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.content.Intent;
import android.os.Bundle;
@ -16,13 +16,11 @@ import com.amazonaws.regions.Region;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.S3ClientOptions;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
@ -117,19 +115,6 @@ public class ObjectSelect extends AppCompatActivity {
//i++;
}
while (result.isTruncated()) {
result = s3client.listNextBatchOfObjects (result);
od = result.getCommonPrefixes();
for (String os : od) {
filename = os.split("/");
if (filename.length == treelevel+1) {
object.add(filename[treelevel]+"/");
}
//i++;
}
}
//This get file list
List<S3ObjectSummary> ob = result.getObjectSummaries();
for (S3ObjectSummary os : ob) {
@ -143,8 +128,23 @@ public class ObjectSelect extends AppCompatActivity {
//i++;
}
//Get next batch
while (result.isTruncated()) {
result = s3client.listNextBatchOfObjects (result);
//This get folder list
od = result.getCommonPrefixes();
for (String os : od) {
filename = os.split("/");
if (filename.length == treelevel+1) {
object.add(filename[treelevel]+"/");
}
//i++;
}
//This get file list
ob = result.getObjectSummaries();
for (S3ObjectSummary os : ob) {
filename = os.getKey().split("/");

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.content.Context;
import android.view.GestureDetector;

View file

@ -0,0 +1,21 @@
package asgardius.page.s3musicmk2;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
public class SdcardCheck {
public static boolean isInstalledOnSdCard(Context context) {
PackageManager pm = context.getPackageManager();
try {
PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
ApplicationInfo ai = pi.applicationInfo;
return (ai.flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) == ApplicationInfo.FLAG_EXTERNAL_STORAGE;
} catch (PackageManager.NameNotFoundException e) {
// ignore
}
return false;
}
}

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.annotation.SuppressLint;
import android.content.Intent;
@ -19,7 +19,7 @@ import com.google.android.material.switchmaterial.SwitchMaterial;
import java.io.File;
import asgardius.page.s3music.databinding.ActivitySettingsBinding;
import asgardius.page.s3musicmk2.databinding.ActivitySettingsBinding;
public class Settings extends AppCompatActivity {
@ -113,6 +113,7 @@ public class Settings extends AppCompatActivity {
try {
standaloneDatabaseProvider = new StandaloneDatabaseProvider(getApplicationContext());
SimpleCache.delete(new File(getApplicationContext().getFilesDir(), "media"), standaloneDatabaseProvider);
SimpleCache.delete(new File(getApplicationContext().getExternalFilesDirs(null)[getApplicationContext().getExternalFilesDirs(null).length-1], "media"), standaloneDatabaseProvider);
standaloneDatabaseProvider.close();
Toast.makeText(getApplicationContext(),getResources().getString(R.string.clearcache_ok), Toast.LENGTH_SHORT).show();
} catch (Exception e) {

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@ -183,12 +183,19 @@ public class VideoPlayer extends AppCompatActivity {
player = new ExoPlayer.Builder(this).setLoadControl(loadControl).build();
player.setAudioAttributes(audioAttributes, true);
mediaSessionConnector.setPlayer(player);
mediaSession.setActive(true);
//mediaSession.setActive(true);
evictor = new LeastRecentlyUsedCacheEvictor(maxCacheSize);
simpleCache = new SimpleCache(
new File(this.getFilesDir(), "media"),
evictor,
standaloneDatabaseProvider);
if(SdcardCheck.isInstalledOnSdCard(this)) {
simpleCache = new SimpleCache(
new File(this.getExternalFilesDirs(null)[this.getExternalFilesDirs(null).length-1], "media"),
evictor,
standaloneDatabaseProvider);
} else {
simpleCache = new SimpleCache(
new File(this.getFilesDir(), "media"),
evictor,
standaloneDatabaseProvider);
}
playerView.setPlayer(player);
controlView.setPlayer(player);
playerView.setUseController(false);
@ -205,19 +212,8 @@ public class VideoPlayer extends AppCompatActivity {
playerNotificationManager.setPlayer(player);
if (isplaylist) {
for (int i = 0; i < queue.size(); i++) {
if (names.get(i).endsWith(".m3u8")) {
MediaItem mediaItem = MediaItem.fromUri(URLify(queue.get(i)));
player.addMediaItem(mediaItem);
} else {
mediaSource = new ProgressiveMediaSource.Factory(
new CacheDataSource.Factory()
.setCache(simpleCache)
.setUpstreamDataSourceFactory(new DefaultHttpDataSource.Factory()
.setUserAgent("S3 Manager"))
.setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR)
).createMediaSource(MediaItem.fromUri(URLify(queue.get(i))));
player.addMediaSource(mediaSource);
}
MediaItem mediaItem = MediaItem.fromUri(URLify(queue.get(i)));
player.addMediaItem(mediaItem);
}
getSupportActionBar().setTitle(names.get(player.getCurrentMediaItemIndex()));
player.prepare();
@ -227,19 +223,8 @@ public class VideoPlayer extends AppCompatActivity {
System.out.println("Playing m3u file");
}
} else {
if (title.endsWith(".m3u8")) {
MediaItem mediaItem = MediaItem.fromUri(URLify(videoURL));
player.setMediaItem(mediaItem);
} else {
mediaSource = new ProgressiveMediaSource.Factory(
new CacheDataSource.Factory()
.setCache(simpleCache)
.setUpstreamDataSourceFactory(new DefaultHttpDataSource.Factory()
.setUserAgent("S3 Manager"))
.setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR)
).createMediaSource(MediaItem.fromUri(URLify(videoURL)));
player.setMediaSource(mediaSource);
}
MediaItem mediaItem = MediaItem.fromUri(URLify(videoURL));
player.setMediaItem(mediaItem);
player.prepare();
}
// Start the playback.
@ -296,6 +281,7 @@ public class VideoPlayer extends AppCompatActivity {
public void onPlaybackStateChanged(@Player.State int state) {
if (state == 3) {
// Active playback.
mediaSession.setActive(true);
success = true;
//Acquiring WakeLock and WifiLock if not held
if (!mWifiLock.isHeld()) {
@ -319,6 +305,7 @@ public class VideoPlayer extends AppCompatActivity {
}
} else {
//Player inactive
mediaSession.setActive(false);
//Releasing WifiLock and WakeLock if held
if (mWifiLock.isHeld()) {
mWifiLock.release();
@ -371,36 +358,14 @@ public class VideoPlayer extends AppCompatActivity {
if (isplaylist) {
player.clearMediaItems();
for (int i = 0; i < queue.size(); i++) {
if (names.get(i).endsWith(".m3u8")) {
MediaItem mediaItem = MediaItem.fromUri(queue.get(i));
player.addMediaItem(mediaItem);
} else {
mediaSource = new ProgressiveMediaSource.Factory(
new CacheDataSource.Factory()
.setCache(simpleCache)
.setUpstreamDataSourceFactory(new DefaultHttpDataSource.Factory()
.setUserAgent("S3 Manager"))
.setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR)
).createMediaSource(MediaItem.fromUri(Uri.parse(queue.get(i))));
player.addMediaSource(mediaSource);
}
MediaItem mediaItem = MediaItem.fromUri(queue.get(i));
player.addMediaItem(mediaItem);
}
player.prepare();
player.seekTo(names.indexOf(title), 0);
} else {
if (title.endsWith(".m3u8")) {
MediaItem mediaItem = MediaItem.fromUri(videoURL);
player.setMediaItem(mediaItem);
} else {
mediaSource = new ProgressiveMediaSource.Factory(
new CacheDataSource.Factory()
.setCache(simpleCache)
.setUpstreamDataSourceFactory(new DefaultHttpDataSource.Factory()
.setUserAgent("S3 Manager"))
.setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR)
).createMediaSource(MediaItem.fromUri(Uri.parse(videoURL)));
player.setMediaSource(mediaSource);
}
MediaItem mediaItem = MediaItem.fromUri(videoURL);
player.setMediaItem(mediaItem);
player.prepare();
}
// Start the playback.

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import androidx.appcompat.app.AppCompatActivity;

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import androidx.appcompat.app.AppCompatActivity;

View file

@ -20,7 +20,8 @@
android:layout_height="wrap_content"
android:text="@string/videocache"
android:textAlignment="center"
android:textSize="25sp"/>
android:textSize="25sp"
android:visibility="gone" />
<EditText
android:id="@+id/videocache"
@ -29,13 +30,15 @@
android:focusable="true"
android:hint="@string/videocache"
android:inputType="number"
android:textColorHint="?attr/colorOnSecondary"/>
android:textColorHint="?attr/colorOnSecondary"
android:visibility="gone" />
<Button
android:id="@+id/clearcache"
android:layout_width="match_parent"
android:layout_height="70dp"
android:text="@string/clearcache" />
android:text="@string/clearcache"
android:visibility="gone" />
<TextView
android:layout_width="match_parent"

View file

@ -20,7 +20,7 @@
<string name="download_failed">Descarga fallida</string>
<string name="upload_failed">Subida fallida</string>
<string name="success">Éxito</string>
<string name="create_bucket">Crear nuevo bucket</string>
<string name="create_bucket">No se encontró nada</string>
<string name="invalid_expiration_date">La fecha de caducidad debe ser inferior a 7 días</string>
<string name="create_bucket_success">Bucket creado exitosamente</string>
<string name="upload_file_here">Subir archivo en el directorio actual</string>

View file

@ -31,7 +31,7 @@
<string name="folder_size">Folder Size</string>
<string name="bucket_size">Bucket Size</string>
<string name="file_count">Files</string>
<string name="create_bucket">Create new bucket</string>
<string name="create_bucket">Nothing found here</string>
<string name="create_bucket_success">Bucket created successfully</string>
<string name="upload_file_here">Upload file in current folder</string>
<string name="upload_folder_here">Upload folder in current folder</string>

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import org.junit.Test;

View file

@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '7.4.2' apply false
id 'com.android.library' version '7.4.2' apply false
id 'com.android.application' version '8.5.2' apply false
id 'com.android.library' version '8.5.2' apply false
}
task clean(type: Delete) {

View file

@ -0,0 +1 @@
* Allow move app to SD Card

View file

@ -0,0 +1,2 @@
* Dependencies upgraded
* Fixed large file list being truncate

View file

@ -0,0 +1 @@
* Libraries updated

View file

@ -0,0 +1 @@
* Music player as separate task

View file

@ -0,0 +1 @@
* Upgrade libraries

View file

@ -30,20 +30,15 @@ Known supported providers
<li>Wasabi Cloud</li>
<li>Backblaze B2</li>
<li>Cloudflare R2 (partial)</li>
<li>MinIO **</li>
<li>Garage **</li>
<li>MinIO</li>
<li>Garage</li>
Known not supported providers
<li>Google Cloud (Not compatible with S3v4)</li>
<li>Oracle Cloud (compatibility issues with S3v4)</li>
** Extra steps required (read documentation)
Please report all issues at https://forum.asgardius.company/t/s3-manager
You can find app documentation at https://wiki.asgardius.company/shelves/asgardius-s3-manager-english (english) or https://wiki.asgardius.company/shelves/asgardius-s3-manager-espanol (spanish)
This app has nonfreenet antifeature because its compatibility list.
You can find app documentation at https://wiki-en.asgardius.company/index.php?title=Asgardius_S3_Manager_Documentation (english) or https://wiki-es.asgardius.company/index.php?title=Documentacion_Asgardius_S3_Manager (spanish)
You can use MinIO or Garage to have a FOSS selfhosted server to use with this app

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View file

@ -18,4 +18,6 @@ android.useAndroidX=true
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
android.nonTransitiveRClass=true
android.defaults.buildfeatures.buildconfig=true
android.nonFinalResIds=false

View file

@ -1,6 +1,6 @@
#Sat Aug 27 12:12:23 MST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME