Compare commits

...

6 commits
0.2.1 ... 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
27 changed files with 331 additions and 94 deletions

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="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>

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>

View file

@ -1,6 +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)

View file

@ -6,11 +6,11 @@ android {
compileSdk 33
defaultConfig {
applicationId "asgardius.page.s3music"
applicationId "asgardius.page.s3musicmk2"
minSdk 21
targetSdk 33
versionCode 12
versionName "0.2.1"
targetSdk 34
versionCode 2
versionName "0.3.1"
setProperty("archivesBaseName", "s3-music-$versionName")
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -29,7 +29,7 @@ android {
buildFeatures {
viewBinding true
}
namespace 'asgardius.page.s3music'
namespace 'asgardius.page.s3musicmk2'
}
dependencies {
@ -43,7 +43,7 @@ dependencies {
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation"com.otaliastudios:zoomlayout:1.9.0"
// BEGIN AWS DEPENDENCIES
def aws_version = "2.73.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

@ -9,7 +9,7 @@
<H3>Created by Page Asgardius</H3>
<H3>Libraries used in this app</H3>
<ul>
<li>Amazon Web Services SDK 2.73.0</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>

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;

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

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

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 {

View file

@ -1,4 +1,4 @@
package asgardius.page.s3music;
package asgardius.page.s3musicmk2;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@ -212,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();
@ -234,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.
@ -380,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

@ -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 '8.1.4' apply false
id 'com.android.library' version '8.1.4' 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) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 30 KiB

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-8.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME