diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 82a7369..0fe16d9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,6 +4,7 @@
+
@@ -21,6 +22,7 @@
+
@@ -67,6 +69,12 @@
+
+
+
+
+
+
diff --git a/app/src/main/java/org/xbmc/kore/service/LibrarySyncService.java b/app/src/main/java/org/xbmc/kore/service/LibrarySyncService.java
index 2d42cab..d2d1d2b 100644
--- a/app/src/main/java/org/xbmc/kore/service/LibrarySyncService.java
+++ b/app/src/main/java/org/xbmc/kore/service/LibrarySyncService.java
@@ -63,7 +63,7 @@ public class LibrarySyncService extends Service {
public static final String TAG = LogUtils.makeLogTag(LibrarySyncService.class);
private static final int LIMIT_SYNC_MOVIES = 300;
- private static final int LIMIT_SYNC_TVSHOWS = 300;
+ private static final int LIMIT_SYNC_TVSHOWS = 200;
private static final int LIMIT_SYNC_ARTISTS = 300;
private static final int LIMIT_SYNC_ALBUMS = 300;
private static final int LIMIT_SYNC_SONGS = 600;
@@ -702,7 +702,7 @@ public class LibrarySyncService extends Service {
startIdx + LIMIT_SYNC_TVSHOWS, allResults);
} else {
// Ok, we have all the shows, insert them
- LogUtils.LOGD(TAG, "syncAllTVShows: Got all tv shows");
+ LogUtils.LOGD(TAG, "syncAllTVShows: Got all tv shows. Total: " + allResults.size());
deleteTVShows(contentResolver, hostId, -1);
insertTVShowsAndGetDetails(orchestrator, hostConnection, callbackHandler,
contentResolver, allResults);
@@ -720,6 +720,7 @@ public class LibrarySyncService extends Service {
private void deleteTVShows(final ContentResolver contentResolver,
int hostId, int tvshowId) {
if (tvshowId == -1) {
+ LogUtils.LOGD(TAG, "Deleting all existing tv shows: ");
// Delete all tvshows
String where = MediaContract.TVShowsColumns.HOST_ID + "=?";
contentResolver.delete(MediaContract.Episodes.CONTENT_URI,
@@ -759,6 +760,7 @@ public class LibrarySyncService extends Service {
}
// Insert the tvshows
contentResolver.bulkInsert(MediaContract.TVShows.CONTENT_URI, tvshowsValuesBatch);
+ LogUtils.LOGD(TAG, "Inserted " + tvShows.size() + " tv shows.");
ContentValues tvshowsCastValuesBatch[] = new ContentValues[castCount];
int count = 0;
@@ -923,6 +925,7 @@ public class LibrarySyncService extends Service {
}, callbackHandler);
} else {
// We're finished
+ LogUtils.LOGD(TAG, "Sync tv shows finished successfully");
orchestrator.syncItemFinished();
}
}
diff --git a/app/src/main/java/org/xbmc/kore/ui/AlbumListFragment.java b/app/src/main/java/org/xbmc/kore/ui/AlbumListFragment.java
index 2d9e3e8..c9659cb 100644
--- a/app/src/main/java/org/xbmc/kore/ui/AlbumListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/AlbumListFragment.java
@@ -55,7 +55,7 @@ import org.xbmc.kore.provider.MediaContract;
import org.xbmc.kore.provider.MediaDatabase;
import org.xbmc.kore.service.LibrarySyncService;
import org.xbmc.kore.utils.LogUtils;
-import org.xbmc.kore.utils.MediaManager;
+import org.xbmc.kore.utils.MediaPlayerUtils;
import org.xbmc.kore.utils.UIUtils;
import butterknife.ButterKnife;
@@ -303,10 +303,10 @@ public class AlbumListFragment extends AbstractMusicListFragment {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_play:
- MediaManager.play(AlbumListFragment.this, playListItem);
+ MediaPlayerUtils.play(AlbumListFragment.this, playListItem);
return true;
case R.id.action_queue:
- MediaManager.queueAudio(AlbumListFragment.this, playListItem);
+ MediaPlayerUtils.queueAudio(AlbumListFragment.this, playListItem);
return true;
}
return false;
diff --git a/app/src/main/java/org/xbmc/kore/ui/ArtistListFragment.java b/app/src/main/java/org/xbmc/kore/ui/ArtistListFragment.java
index 8df627a..f23a4c6 100644
--- a/app/src/main/java/org/xbmc/kore/ui/ArtistListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/ArtistListFragment.java
@@ -44,7 +44,7 @@ import org.xbmc.kore.jsonrpc.type.PlaylistType;
import org.xbmc.kore.provider.MediaContract;
import org.xbmc.kore.provider.MediaDatabase;
import org.xbmc.kore.utils.LogUtils;
-import org.xbmc.kore.utils.MediaManager;
+import org.xbmc.kore.utils.MediaPlayerUtils;
import org.xbmc.kore.utils.UIUtils;
/**
@@ -226,10 +226,10 @@ public class ArtistListFragment extends AbstractMusicListFragment {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_play:
- MediaManager.play(ArtistListFragment.this, playListItem);
+ MediaPlayerUtils.play(ArtistListFragment.this, playListItem);
return true;
case R.id.action_queue:
- MediaManager.queueAudio(ArtistListFragment.this, playListItem);
+ MediaPlayerUtils.queueAudio(ArtistListFragment.this, playListItem);
return true;
}
return false;
diff --git a/app/src/main/java/org/xbmc/kore/ui/AudioGenresListFragment.java b/app/src/main/java/org/xbmc/kore/ui/AudioGenresListFragment.java
index 11ee0f7..266fe57 100644
--- a/app/src/main/java/org/xbmc/kore/ui/AudioGenresListFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/AudioGenresListFragment.java
@@ -54,7 +54,7 @@ import org.xbmc.kore.jsonrpc.type.PlaylistType;
import org.xbmc.kore.provider.MediaContract;
import org.xbmc.kore.service.LibrarySyncService;
import org.xbmc.kore.utils.LogUtils;
-import org.xbmc.kore.utils.MediaManager;
+import org.xbmc.kore.utils.MediaPlayerUtils;
import org.xbmc.kore.utils.UIUtils;
import butterknife.ButterKnife;
@@ -235,10 +235,10 @@ public class AudioGenresListFragment extends AbstractMusicListFragment {
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_play:
- MediaManager.play(AudioGenresListFragment.this, playListItem);
+ MediaPlayerUtils.play(AudioGenresListFragment.this, playListItem);
return true;
case R.id.action_queue:
- MediaManager.queueAudio(AudioGenresListFragment.this, playListItem);
+ MediaPlayerUtils.queueAudio(AudioGenresListFragment.this, playListItem);
return true;
}
return false;
diff --git a/app/src/main/java/org/xbmc/kore/ui/RemoteFragment.java b/app/src/main/java/org/xbmc/kore/ui/RemoteFragment.java
index 718d3d4..b5c893f 100644
--- a/app/src/main/java/org/xbmc/kore/ui/RemoteFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/RemoteFragment.java
@@ -232,8 +232,9 @@ public class RemoteFragment extends Fragment
R.attr.remoteButtonColorFilter,
R.attr.contentBackgroundColor});
// R.attr.remoteBackgroundColorFilter});
- int remoteButtonsColor = styledAttributes.getColor(0, R.color.white),
- remoteBackgroundColor = styledAttributes.getColor(1, R.color.dark_content_background_dim_70pct);
+ Resources resources = getResources();
+ int remoteButtonsColor = styledAttributes.getColor(0, resources.getColor(R.color.white)),
+ remoteBackgroundColor = styledAttributes.getColor(1, resources.getColor(R.color.dark_content_background_dim_70pct));
styledAttributes.recycle();
leftButton.setColorFilter(remoteButtonsColor);
@@ -344,7 +345,8 @@ public class RemoteFragment extends Fragment
new View.OnClickListener() {
@Override
public void onClick(View v) {
- eventServerConnection.sendPacket(packet);
+ if (eventServerConnection != null)
+ eventServerConnection.sendPacket(packet);
}
}, buttonInAnim, buttonOutAnim, getActivity().getApplicationContext()));
}
diff --git a/app/src/main/java/org/xbmc/kore/ui/TVShowEpisodeDetailsFragment.java b/app/src/main/java/org/xbmc/kore/ui/TVShowEpisodeDetailsFragment.java
index 120f098..d293820 100644
--- a/app/src/main/java/org/xbmc/kore/ui/TVShowEpisodeDetailsFragment.java
+++ b/app/src/main/java/org/xbmc/kore/ui/TVShowEpisodeDetailsFragment.java
@@ -396,7 +396,6 @@ public class TVShowEpisodeDetailsFragment extends Fragment
}
}, callbackHandler);
} else {
- if (!isAdded()) return;
Toast.makeText(getActivity(), R.string.no_suitable_playlist, Toast.LENGTH_SHORT)
.show();
}
@@ -404,6 +403,7 @@ public class TVShowEpisodeDetailsFragment extends Fragment
@Override
public void onError(int errorCode, String description) {
+ if (!isAdded()) return;
// Got an error, show toast
Toast.makeText(getActivity(), R.string.unable_to_connect_to_xbmc, Toast.LENGTH_SHORT)
.show();
diff --git a/app/src/main/java/org/xbmc/kore/ui/hosts/AddHostFragmentZeroconf.java b/app/src/main/java/org/xbmc/kore/ui/hosts/AddHostFragmentZeroconf.java
index bf43d1f..1271e9d 100644
--- a/app/src/main/java/org/xbmc/kore/ui/hosts/AddHostFragmentZeroconf.java
+++ b/app/src/main/java/org/xbmc/kore/ui/hosts/AddHostFragmentZeroconf.java
@@ -17,6 +17,8 @@ package org.xbmc.kore.ui.hosts;
import android.app.Activity;
import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
@@ -118,6 +120,11 @@ public class AddHostFragmentZeroconf extends Fragment {
* Starts the service discovery, setting up the UI accordingly
*/
public void startSearching() {
+ if( ! isNetworkConnected() ) {
+ noNetworkConnection();
+ return;
+ }
+
LogUtils.LOGD(TAG, "Starting service discovery...");
searchCancelled = false;
final Handler handler = new Handler();
@@ -125,6 +132,7 @@ public class AddHostFragmentZeroconf extends Fragment {
@Override
public void run() {
WifiManager wifiManager = (WifiManager)getActivity().getSystemService(Context.WIFI_SERVICE);
+
WifiManager.MulticastLock multicastLock = null;
try {
// Get wifi ip address
@@ -279,6 +287,37 @@ public class AddHostFragmentZeroconf extends Fragment {
}
+ private void noNetworkConnection() {
+ titleTextView.setText(R.string.no_network_connection);
+ messageTextView.setText(Html.fromHtml(getString(R.string.wizard_search_no_network_connection)));
+ messageTextView.setMovementMethod(LinkMovementMethod.getInstance());
+
+ progressBar.setVisibility(View.GONE);
+ hostListGridView.setVisibility(View.GONE);
+
+ nextButton.setVisibility(View.GONE);
+
+ previousButton.setVisibility(View.VISIBLE);
+ previousButton.setText(R.string.search_again);
+ previousButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startSearching();
+ }
+ });
+ }
+
+ private boolean isNetworkConnected() {
+ ConnectivityManager cm =
+ (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
+
+ NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
+ boolean isConnected = activeNetwork != null &&
+ activeNetwork.isConnectedOrConnecting();
+
+ return isConnected;
+ }
+
/**
* Adapter used to show the hosts in the {@link GridView}
*/
diff --git a/app/src/main/java/org/xbmc/kore/utils/MediaManager.java b/app/src/main/java/org/xbmc/kore/utils/MediaPlayerUtils.java
similarity index 99%
rename from app/src/main/java/org/xbmc/kore/utils/MediaManager.java
rename to app/src/main/java/org/xbmc/kore/utils/MediaPlayerUtils.java
index 03531f3..0db2bbc 100644
--- a/app/src/main/java/org/xbmc/kore/utils/MediaManager.java
+++ b/app/src/main/java/org/xbmc/kore/utils/MediaPlayerUtils.java
@@ -35,7 +35,7 @@ import org.xbmc.kore.ui.RemoteActivity;
import java.util.ArrayList;
-public class MediaManager {
+public class MediaPlayerUtils {
/**
* Clears current playlist and starts playing item
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 0daddb1..81efb96 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -276,6 +276,45 @@
Si vous avez besoin d\'aide, consultez le forum
]]>
+ Aucune connexion réseau
+ Redémarrer
+ Afficher les notifications pendant la lecture
+ Par date d\'ajout
+ Par nom
+ Trier
+ Source vide
+ Synchroniser les sous-titres
+ Controller le volume avec les boutons de l\'appareil
+ Vidéo
+ Vibrer au touché
+ Veuillez renseigner un port EventServer valide pour ce média.
+ ]]>
+ ES Port (9777)
+ Utiliser EventServer
+ Utiliser TCP
+ Connexion à ce centre multimédia impossible car l\'adresse est introuvable.
+ Récupération de l\'adresse impossible!
+ %d plus
+ File d\'attente
+ Jouer
+ Jouer à partir d\'ici
+ Kodi
+ Fichiers
+ Fichiers
+ Ajout du média impossible.\nErreur: %1$s.
+ Lecture du média impossible.\nErreur: %1$s.
+ Navigation dans les fichiers impossible.\nErreur: %1$s.
+ Récupération du lecteur actif impossible.\nErreur: %1$s.
+ Contexte
+ Etes-vous sûre de vouloir télécharger cet album?\nCelui-ci sera téléchargé en arrière-plan, mais
+ prendra du temps.
+ Etes-vous sûre de vouloir télécharger cet épisode?\nCelui-ci sera téléchargé en arrière-plan,
+ mais prendra du temps.
+ Etes-vous sûre de vouloir télécharger cet album?\nCelui-ci sera téléchargé en arrière-plan, mais
+ prendra du temps.
+ Synchronisation audio
+ Ignorer les préfixes
+ Aucun acteur à afficher
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index d02b20c..a9cb81b 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -247,6 +247,9 @@ Se necessitar de ajuda, visite o nosso Vídeo
Porto ES (9777)
Usar EventServer
+ Nenhuma conexão de rede activa
+ Por favor especifique um porto válido para o EventServer.
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c2f8dab..cb24bc5 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -80,9 +80,13 @@
I couldn\'t find any media center on your network.
If you need help configuring it, check
+ ]]>
Select one to add or press Next to manually add a new one.
]]>
+ No network connection
Searching…
No media center found
Media center found
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 541e3ad..c30cf2a 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -24,22 +24,22 @@
android:entryValues="@array/themes_values_array"
android:defaultValue="0"/>
-
-
-
-