diff options
author | lado <herrlado@gmail.com> | 2011-10-08 02:18:52 +0200 |
---|---|---|
committer | lado <herrlado@gmail.com> | 2011-10-08 02:18:52 +0200 |
commit | ea30c8114bf099f2fdd96994569c57393a4e08c3 (patch) | |
tree | 46f5a609d0c7a13acd41f7eb65384f6b817df8ea | |
parent | f3deabce766d858c284a8e4597fd1686989e44db (diff) | |
download | vdr-manager-ea30c8114bf099f2fdd96994569c57393a4e08c3.tar.gz vdr-manager-ea30c8114bf099f2fdd96994569c57393a4e08c3.tar.bz2 |
support now streaming via remux
-rw-r--r-- | vdrmanager/res/values/livetv.xml | 19 | ||||
-rw-r--r-- | vdrmanager/res/xml/preferences.xml | 39 | ||||
-rw-r--r-- | vdrmanager/src/de/bjusystems/vdrmanager/data/Preferences.java | 49 | ||||
-rw-r--r-- | vdrmanager/src/de/bjusystems/vdrmanager/gui/PreferencesActivity.java | 1 | ||||
-rw-r--r-- | vdrmanager/src/de/bjusystems/vdrmanager/gui/Utils.java | 69 |
5 files changed, 151 insertions, 26 deletions
diff --git a/vdrmanager/res/values/livetv.xml b/vdrmanager/res/values/livetv.xml index 266f862..c39d228 100644 --- a/vdrmanager/res/values/livetv.xml +++ b/vdrmanager/res/values/livetv.xml @@ -12,13 +12,28 @@ <item>PES</item> <item>ES</item> <item>PS</item> - <item>External</item> </string-array> <string-array name="livetv_streamformat_values"> <item>TS</item> <item>PES</item> <item>ES</item> <item>PS</item> - <item>EXT</item> </string-array> + <string name="key_remux_enable">remux_enable</string> + <string name="key_remux_command">remux_command</string> + <string name="key_remux_parameter">remux_parameter</string> + + <string name="stream_via_as">Stream</string> + <string name="stream_via">via %s</string> + <string name="stream_as">as %s</string> + <string name="remux_title">Remux</string> + <string name="remux_enable_title">Enable Remux</string> + <string name="remux_enable_summary">Enable streaming via remux (e.g. externremux.sh)</string> + + <string name="remux_command_title">Command</string> + <string name="remux_command_summary">Typically EXT or Extern e.g. http://vdr:3000/Extern/1</string> + + <string name="remux_parameter_title">Parameter</string> + <string name="remux_parameter_summary">Control Streaming quality. E.g. http://vdr:3000/Extern;DSL1000/1</string> + </resources> diff --git a/vdrmanager/res/xml/preferences.xml b/vdrmanager/res/xml/preferences.xml index 10063b7..a8578b2 100644 --- a/vdrmanager/res/xml/preferences.xml +++ b/vdrmanager/res/xml/preferences.xml @@ -3,6 +3,7 @@ <PreferenceCategory android:title="@string/vdr_preferences" android:key="vdr_preferences"> + <EditTextPreference android:key="@string/vdr_host_key" android:title="@string/vdr_host_title" android:summary="@string/vdr_host_summary" /> <EditTextPreference android:key="@string/vdr_port_key" @@ -15,17 +16,7 @@ android:title="@string/vdr_ssl_title" android:summary="@string/vdr_ssl_summary" /> </PreferenceCategory> - <PreferenceCategory android:title="@string/livetv"> - <ListPreference android:key="livetv_streamformat" - android:title="@string/settings_livetv_streamformat" - android:defaultValue="TS" android:entries="@array/livetv_streamformat" - android:entryValues="@array/livetv_streamformat_values" /> - <EditTextPreference android:key="streamingport" - android:inputType="number" android:title="@string/settings_livetv_port" - android:summary="@string/settings_livetv_port_summary" - android:defaultValue="3000" /> - </PreferenceCategory> - + <PreferenceCategory android:title="@string/channel_filter_preferences" android:key="filter_preferences"> <CheckBoxPreference android:key="@string/channel_filter_filter_key" @@ -59,7 +50,7 @@ <EditTextPreference android:key="@string/wakeup_wol_custom_broadcast_key" android:title="@string/wakeup_wol_custom_boradcast_title" android:summaryOn="@string/wakeup_wol_custom_boradcast_summary" - android:dependency="@string/wakeup_enabled_key" android:defaultValue="" /> + android:dependency="@string/wakeup_enabled_key" android:defaultValue="255.255.255.255" /> </PreferenceCategory> <PreferenceCategory android:title="@string/timer_preferences" @@ -88,4 +79,28 @@ android:summaryOn="@string/gui_enable_24h_format_summary_on" android:summaryOff="@string/gui_enable_24h_format_summary_off" /> </PreferenceCategory> + <PreferenceCategory android:title="@string/livetv"> + <EditTextPreference android:key="streamingport" + android:inputType="number" android:title="@string/settings_livetv_port" + android:summary="@string/settings_livetv_port_summary" + android:defaultValue="3000" /> + + <ListPreference android:key="livetv_streamformat" + android:title="@string/settings_livetv_streamformat" + android:defaultValue="TS" android:entries="@array/livetv_streamformat" + android:entryValues="@array/livetv_streamformat_values" /> + + <CheckBoxPreference android:key="remux_enable" android:title="@string/remux_enable_title" android:summary="@string/remux_enable_summary" + + /> + <EditTextPreference android:dependency="remux_enable" android:key="remux_command" android:title="@string/remux_command_title" android:defaultValue="EXT" android:summary="@string/remux_command_summary" + /> + + <EditTextPreference android:dependency="remux_enable" android:key="remux_parameter" android:title="@string/remux_parameter_title" android:summary="@string/remux_parameter_summary" + android:defaultValue="QUALITY=DSL1000" + /> + + + </PreferenceCategory> + </PreferenceScreen> diff --git a/vdrmanager/src/de/bjusystems/vdrmanager/data/Preferences.java b/vdrmanager/src/de/bjusystems/vdrmanager/data/Preferences.java index 9b61417..0f1b731 100644 --- a/vdrmanager/src/de/bjusystems/vdrmanager/data/Preferences.java +++ b/vdrmanager/src/de/bjusystems/vdrmanager/data/Preferences.java @@ -91,6 +91,20 @@ public class Preferences { */ private boolean showChannelNumbers = false; + /** + * Use remux ? + */ + private boolean enableRemux; + + /** + * Remux command + */ + private String remuxCommand; + + /** + * Remux command Parameter + */ + private String remuxParameter; /** Properties singleton */ private static Preferences thePrefs; @@ -354,6 +368,35 @@ public class Preferences { return showChannelNumbers; } + + + /** + * getter + * @return + */ + public boolean isEnableRemux() { + return enableRemux; + } + + + /** + * getter + * @return + */ + public String getRemuxCommand() { + return remuxCommand; + } + + + /** + * getter + * @return + */ + public String getRemuxParameter() { + return remuxParameter; + } + + /** * Gets the previous loaded preferences * @@ -432,6 +475,12 @@ public class Preferences { prefs.showChannelNumbers = getBoolean(context, R.string.gui_channels_show_channel_numbers_key, false); + prefs.enableRemux = getBoolean(context, R.string.key_remux_enable, false); + + prefs.remuxCommand =getString(context, R.string.key_remux_command, "EXT"); + + prefs.remuxParameter = getString(context, R.string.key_remux_parameter, ""); + thePrefs = prefs; } diff --git a/vdrmanager/src/de/bjusystems/vdrmanager/gui/PreferencesActivity.java b/vdrmanager/src/de/bjusystems/vdrmanager/gui/PreferencesActivity.java index 47cd395..dfffc0c 100644 --- a/vdrmanager/src/de/bjusystems/vdrmanager/gui/PreferencesActivity.java +++ b/vdrmanager/src/de/bjusystems/vdrmanager/gui/PreferencesActivity.java @@ -112,6 +112,7 @@ public class PreferencesActivity extends PreferenceActivity implements updateSummary(p); } + } @Override diff --git a/vdrmanager/src/de/bjusystems/vdrmanager/gui/Utils.java b/vdrmanager/src/de/bjusystems/vdrmanager/gui/Utils.java index ee2ac5f..98db2c8 100644 --- a/vdrmanager/src/de/bjusystems/vdrmanager/gui/Utils.java +++ b/vdrmanager/src/de/bjusystems/vdrmanager/gui/Utils.java @@ -3,9 +3,13 @@ package de.bjusystems.vdrmanager.gui; import java.util.Date; import android.app.Activity; +import android.app.AlertDialog; +import android.app.AlertDialog.Builder; +import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; +import de.bjusystems.vdrmanager.R; import de.bjusystems.vdrmanager.data.Channel; import de.bjusystems.vdrmanager.data.Event; import de.bjusystems.vdrmanager.data.Preferences; @@ -36,11 +40,12 @@ public class Utils { return -1; } - public static boolean isLive(Event event){ + public static boolean isLive(Event event) { long now = new Date().getTime(); - return now >= event.getStart().getTime() && now < event.getStop().getTime(); + return now >= event.getStart().getTime() + && now < event.getStop().getTime(); } - + private static String getStreamUrl(String chn) { // "http://192.168.1.119:3000/TS/" StringBuilder sb = new StringBuilder(); @@ -51,28 +56,68 @@ public class Utils { return sb.toString(); } - + private static String getRemuxStreamUrl(String chn) { + // "http://192.168.1.119:3000/TS/" + StringBuilder sb = new StringBuilder(); + Preferences p = Preferences.getPreferences(); + sb.append("http://").append(p.getSvdrpHost()).append(":") + .append(p.getStreamPort()).append("/") + .append(p.getRemuxCommand()).append(";") + .append(p.getRemuxParameter()).append("/").append(chn); + return sb.toString(); + } + public static void stream(Activity activity, Event event) { stream(activity, event.getChannelNumber()); } - public static void stream(Activity a, Channel c){ + public static void stream(Activity a, Channel c) { stream(a, String.valueOf(c.getNumber())); } - - - public static void stream(Activity activity, String chn) { + + public static void stream(final Activity activity, final String chn) { + String url = getStreamUrl(chn); + if (Preferences.get().isEnableRemux() == false) { + url = getStreamUrl(chn); + startStream(activity, url); + } + + String sf = Preferences.get().getStreamFormat(); + String ext = activity.getString(R.string.remux_title); + new AlertDialog.Builder(activity) + .setTitle(R.string.stream_via_as)// + .setItems( + new String[] { + activity.getString(R.string.stream_as, sf), + activity.getString(R.string.stream_via, ext) },// + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, + int which) { + String url = null; + switch (which) { + case 0: + url = getStreamUrl(chn); + break; + case 1: + url = getRemuxStreamUrl(chn); + break; + } + startStream(activity, url); + } + }).create().show(); + } + + public static void startStream(Activity activity, String url) { final Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(url.toString()), "video/*"); activity.startActivityForResult(intent, 1); - } - public static int getDuration(Event event){ + public static int getDuration(Event event) { long millis = event.getStop().getTime() - event.getStart().getTime(); - int minuts = (int)(millis / 1000 / 60); + int minuts = (int) (millis / 1000 / 60); return minuts; } - + } |