Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/issue112 #139

Merged
merged 4 commits into from
Dec 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,5 @@
org.gradle.jvmargs=-Xmx2048M
android.enableJetifier=true
android.useAndroidX=true
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
11 changes: 7 additions & 4 deletions yaacc/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
buildscript {

dependencies {
classpath 'com.android.tools.build:gradle:8.3.0'
classpath 'com.android.tools.build:gradle:8.7.3'

}
}
Expand All @@ -21,7 +21,6 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'org.apache.httpcomponents.client5:httpclient5:5.2.1'
implementation 'org.apache.httpcomponents.core5:httpcore5:5.2'
// implementation 'org.slf4j:slf4j-simple:2.0.6'
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'androidx.preference:preference:1.1.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1'
Expand All @@ -31,7 +30,7 @@ dependencies {
}

android {
compileSdk 32
compileSdk 33


sourceSets {
Expand Down Expand Up @@ -60,9 +59,13 @@ android {
targetCompatibility JavaVersion.VERSION_11
}

androidResources {
generateLocaleConfig false
}

defaultConfig {
targetSdkVersion 32
resourceConfigurations += ["en", "de", "nl", "fr", "pt", "es"]
targetSdkVersion 33
minSdkVersion 27
}
lint {
Expand Down
16 changes: 13 additions & 3 deletions yaacc/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,29 @@
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission
android:maxSdkVersion="33"
android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android:maxSdkVersion="32"
android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_PHOTOS" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android. permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />


<application
android:name=".Yaacc"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:localeConfig="@xml/locales_config"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">

<activity
android:name=".browser.TabBrowserActivity"
android:exported="true"
Expand Down
41 changes: 23 additions & 18 deletions yaacc/src/main/java/de/yaacc/browser/TabBrowserActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@

import com.google.android.material.tabs.TabLayout;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
Expand Down Expand Up @@ -239,29 +240,33 @@ private void checkIfReceivedShareIntent(Intent receivedIntent) {
Runnable execution = new Runnable() {
@Override
public void run() {
if (upnpClient.getReceiverDevicesReadyCount() == 0) {
runOnUiThread(new Runnable() {
try {
if (upnpClient.getReceiverDevicesReadyCount() == 0) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "no receiver found using local device", Toast.LENGTH_LONG).show();
}
});

upnpClient.setReceiverDeviceIds(Set.of(UpnpClient.LOCAL_UID));
}
items.add(upnpClient.createPlayableItem(uri));

handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "no receiver found using local device", Toast.LENGTH_LONG).show();

List<Player> players = upnpClient.initializePlayersWithPlayableItems(items);
for (Player player : players) {
player.play();
}
setCurrentTab(BrowserTabs.PLAYER);
}
});

upnpClient.setReceiverDeviceIds(Set.of(UpnpClient.LOCAL_UID));
} catch (IOException ioException) {
throw new RuntimeException(ioException);
}
items.add(upnpClient.createPlayableItem(uri));

handler.post(new Runnable() {
@Override
public void run() {

List<Player> players = upnpClient.initializePlayersWithPlayableItems(items);
for (Player player : players) {
player.play();
}
setCurrentTab(BrowserTabs.PLAYER);
}
});
}
};

Expand Down
10 changes: 4 additions & 6 deletions yaacc/src/main/java/de/yaacc/upnp/UpnpClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
import org.fourthline.cling.support.renderingcontrol.callback.SetVolume;
import org.seamless.util.MimeType;

import java.io.IOException;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
Expand Down Expand Up @@ -1592,17 +1593,16 @@ public void addToPlaylist(DIDLObject item) {

}

public PlayableItem createPlayableItem(Uri uri) {
public PlayableItem createPlayableItem(Uri uri) throws IOException {
PlayableItem item = new PlayableItem();
if (uri == null) {
return item;
}
String uriString = uri.toString();
final String title = "shared with yaacc with ♥";
//auto closeable requires Android code level 29 current min level is 27
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
Res res = null;
try {
try (MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever()) {
Res res = null;
try {
metaRetriever.setDataSource(uriString);
long duration = Long.parseLong(metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
Expand Down Expand Up @@ -1636,8 +1636,6 @@ public PlayableItem createPlayableItem(Uri uri) {
res.setValue(proxyUrl);
}
item.setTitle(title);
} finally {
metaRetriever.close();
}
return item;
}
Expand Down
1 change: 1 addition & 0 deletions yaacc/src/main/res/resources.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
unqualifiedResLocale=en
2 changes: 0 additions & 2 deletions yaacc/src/main/res/values-de/setting_strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,9 @@
<string name="settings_default_playback_delay">Wartezeit vor dem Abspielen</string>
<string name="settings_device_playback_offset">Gerätespezifischer Abspielversatz</string>
<string name="settings_device_playback_offset_summ">Versatz in ms</string>
<string name="settings_swipe_chkbx">settings_swipe_chkbx</string>
<string name="settings_browse_swipe_off">Tabwechsel nur mit Touch</string>
<string name="settings_browse_swipe_on">Tabwechsel mit Swipe und Touch</string>
<string name="settings_browse_swipe_title">"Swipe-Verhalten "</string>
<string name="settings_local_server_if_filter_key">settings_local_server_if_filter_key</string>
<string name="settings_local_server_if_filter_names">Ignorierte Interfaces für die IP-Ermittlung</string>

</resources>
6 changes: 0 additions & 6 deletions yaacc/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@
<string name="playerPosition">Position</string>
<string name="playerTiming">Timing: </string>
<string name="playerTimeDuration">Dauer</string>
<string name="playerTimeSeparator"> / </string>
<string name="playerTimeElapsed">Verstrichene Zeit</string>
<string name="bucket_names">Galerien</string>
<string name="all_images">Alle Bilder</string>
Expand Down Expand Up @@ -103,17 +102,12 @@
<string name="playerShortNameMusic">Musik</string>
<string name="playerShortNameMultiContent">Multi</string>
<string name="settings_browse_chunk_size">Abfragegröße</string>
<string name="settings_browse_chunk_size_key">browse_chunk_size_key</string>
<string name="settings_browse_chunk_size_summ">Anzahl der abzufragenden Einträge je Anfrage</string>
<string name="settings_category_appearance">Erscheinungsbild</string>
<string name="settings_dark_mode_key">settings_dark_mode_key</string>
<string name="settings_dark_mode_title">Dunkles Design</string>
<string name="settings_dark_mode_off">Verwende Systemeinstellungen</string>
<string name="settings_dark_mode_on">Dunkles Design aktiv</string>
<string name="settings_log_level_key">settings_log_level_key</string>
<string name="settings_log_level">Log level</string>
<string name="settings_local_server_provider_uuid_key">settings_local_server_provider_uuid_key</string>
<string name="settings_local_server_receiver_uuid_key">settings_local_server_receiver_uuid_key</string>
<string name="media_store_scanner_scan_triggered">Aktualisierung der Mediendatenbank gestartet</string>
<string name="media_store_scanner_scan_finished">Aktualisierung der Mediendatenbank beendet</string>
<string name="media_store_scan">Scan</string>
Expand Down
78 changes: 78 additions & 0 deletions yaacc/src/main/res/values-es/setting_strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="settings_category_send_rec">enviando y recibiendo</string>
<string name="settings_category_browsing">comportamiento de navegación multimedia</string>
<string name="settings_selected_provider_title">proveedor de medios actual</string>
<string name="settings_change_provider">pestaña para cambiar el proveedor actual</string>
<string name="settings_selected_receivers_title">receptores de medios actuales</string>
<string name="settings_change_receiver">pestaña para cambiar el receptor actual</string>
<string name="settings_audio_app">reproducción de audio</string>
<string name="settings_video_app">reproducción de vídeo</string>
<string name="settings_image_app">reproducción de imágenes</string>
<string name="settings_default_duration">duración predeterminada del elemento</string>
<string name="settings_silence_duration">duración del silencio</string>
<string name="settings_image_app_on">La reproducción de imágenes locales directamente en YAACC está habilitada.</string>
<string name="settings_image_app_off">La reproducción de imágenes locales abre una aplicación de terceros.</string>
<string name="settings_video_app_on">La reproducción de video local directamente en YAACC está habilitada.</string>
<string name="settings_video_app_off">La reproducción de video local abre una aplicación de terceros.</string>
<string name="settings_browse_audio_on">mostrar archivos de audio</string>
<string name="settings_browse_audio_off">no mostrar archivos de audio</string>
<string name="settings_browse_video_on">mostrar archivos de vídeo</string>
<string name="settings_browse_video_off">no mostrar archivos de video</string>
<string name="settings_browse_image_on">mostrar archivos de imagen</string>
<string name="settings_browse_image_off">no mostrar archivos de imagen</string>
<string name="settings_browse_thumbnails_title">miniaturas</string>
<string name="settings_browse_thumbnails_on">mostrar miniaturas de imágenes</string>
<string name="settings_browse_thumbnails_off">no mostrar miniaturas de imágenes</string>
<string name="settings_browse_thumbnails_coverlookup_title">Imágenes de portada</string>
<string name="settings_browse_thumbnails_coverlookup_on">Las imágenes de los directorios se utilizan como portadas de música.</string>
<string name="settings_browse_thumbnails_coverlookup_off">Las imágenes de los directorios no se utilizan como portadas.</string>
<string name="settings_browse_load_threads">número de hilos</string>
<string name="settings_browse_load_threads_summ">Configure la cantidad de subprocesos utilizados para cargar contenido desde el servidor UPnP. Más subprocesos provocan una carga más rápida pero aumentan la posibilidad de errores. Los cambios entran en vigor después del reinicio de yaacc.</string>
<string name="settings_no_content_found">no se encontró contenido para navegar</string>
<string name="settings_local_server_title">configuración del servidor local</string>
<string name="settings_local_server_activation_title">estado del servidor local</string>
<string name="settings_local_server_started">se inicia el servidor local</string>
<string name="settings_local_server_stopped">el servidor local está detenido</string>
<string name="settings_local_server_receiver_title">servicio de receptor de medios</string>
<string name="settings_local_server_receiver_off">el receptor de medios está deshabilitado</string>
<string name="settings_local_server_receiver_on">El receptor de medios está habilitado.</string>
<string name="settings_local_server_provider_title">servicio de proveedor de medios</string>
<string name="settings_local_server_provider_off">el directorio de contenido está deshabilitado</string>
<string name="settings_local_server_provider_on">el directorio de contenido está habilitado</string>
<string name="settings_local_server_proxy_title">servicio de proxy de medios</string>
<string name="settings_local_server_proxy_off">proxy de medios desactivado</string>
<string name="settings_local_server_proxy_on">proxy de medios activado</string>
<string name="settings_local_server_testcontent">servidor local usando contenido de prueba</string>
<string name="settings_local_server_provider_source_title">fuente del proveedor de medios</string>
<string name="settings_local_server_mediastore">servidor local usando mediastore</string>
<string name="settings_local_server_serve_images_title">servir imágenes</string>
<string name="settings_local_server_serve_images_off">servir imágenes está deshabilitado</string>
<string name="settings_local_server_serve_images_on">servir imágenes está habilitado</string>
<string name="settings_local_server_serve_music_title">servir musica</string>
<string name="settings_local_server_serve_music_off">servir música está deshabilitado</string>
<string name="settings_local_server_serve_music_on">servir música está habilitado</string>
<string name="settings_local_server_serve_video_title">servir vídeos</string>
<string name="settings_local_server_serve_video_off">servir video está deshabilitado</string>
<string name="settings_local_server_serve_video_on">servir video está habilitado</string>
<string name="settings_local_server_name">nombre de red para el servidor local</string>
<string name="settings_local_server_autostart_title">servidor de inicio automático al arrancar</string>
<string name="settings_local_server_autostart_deactivated">El servidor no se inicia después del arranque.</string>
<string name="settings_local_server_autostart_activated">El servidor se iniciará después del arranque.</string>
<string name="settings_sending_upnp_alive_interval">enviando notificaciones activas UPnP</string>
<string name="settings_category_playing">comportamiento de reproducción multimedia</string>
<string name="settings_replay_title">reproducir lista de reproducción</string>
<string name="settings_replay_playlist_on">reproducir lista de reproducción</string>
<string name="settings_replay_playlist_off">no reproducir la lista de reproducción</string>
<string name="settings_music_player_shuffle_title">música aleatoria</string>
<string name="settings_music_player_shuffle_on">reproducción de música aleatoria</string>
<string name="settings_music_player_shuffle_off">reproducción de música ordenada</string>
<string name="settings_category_synchronization">configuración de sincronización</string>
<string name="settings_default_playback_delay">retraso de reproducción</string>
<string name="settings_device_playback_offset">compensación del dispositivo</string>
<string name="settings_device_playback_offset_summ">desplazamiento en ms</string>
<string name="settings_browse_swipe_off">Cambiar pestañas al tocar</string>
<string name="settings_browse_swipe_on">Cambiar pestañas al deslizar y tocar</string>
<string name="settings_browse_swipe_title">Desliza el dedo para navegar</string>
<string name="settings_local_server_if_filter_names">Interfaces en lista negra para recuperación de direcciones IP.</string>
</resources>
Loading
Loading