Added a H264 availability check.

This commit is contained in:
Armin Novak 2017-02-23 12:31:08 +01:00
parent 5d8a9f2ff3
commit f47bde3df2
5 changed files with 58 additions and 17 deletions

View File

@ -18,7 +18,10 @@ import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.util.Log;
import android.view.View;
import com.freerdp.freerdpcore.R;
import com.freerdp.freerdpcore.application.GlobalApp;
@ -26,6 +29,7 @@ import com.freerdp.freerdpcore.domain.BookmarkBase;
import com.freerdp.freerdpcore.domain.ConnectionReference;
import com.freerdp.freerdpcore.domain.ManualBookmark;
import com.freerdp.freerdpcore.services.BookmarkBaseGateway;
import com.freerdp.freerdpcore.services.LibFreeRDP;
import com.freerdp.freerdpcore.utils.RDPFileParser;
import java.io.File;
@ -55,14 +59,15 @@ public class BookmarkActivity extends PreferenceActivity implements
private static boolean settings_changed = false;
private static boolean new_bookmark = false;
private int current_preferences;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PreferenceManager mgr = getPreferenceManager();
// init shared preferences for activity
getPreferenceManager().setSharedPreferencesName("TEMP");
getPreferenceManager().setSharedPreferencesMode(MODE_PRIVATE);
mgr.setSharedPreferencesName("TEMP");
mgr.setSharedPreferencesMode(MODE_PRIVATE);
if (bookmark == null) {
// if we have a bookmark id set in the extras we are in edit mode
@ -112,15 +117,15 @@ public class BookmarkActivity extends PreferenceActivity implements
// hide gateway settings if we edit a non-manual bookmark
if (current_preferences == PREFERENCES_ADVANCED
&& bookmark.getType() != ManualBookmark.TYPE_MANUAL) {
getPreferenceScreen().removePreference(
findPreference("bookmark.enable_gateway"));
getPreferenceScreen().removePreference(
findPreference("bookmark.gateway"));
PreferenceScreen screen = getPreferenceScreen();
screen.removePreference(findPreference("bookmark.enable_gateway"));
screen.removePreference(findPreference("bookmark.gateway"));
}
updateH264Preferences();
// update preferences from bookmark
bookmark.writeToSharedPreferences(getPreferenceManager()
.getSharedPreferences());
bookmark.writeToSharedPreferences(mgr.getSharedPreferences());
// no settings changed yet
settings_changed = false;
@ -168,15 +173,34 @@ public class BookmarkActivity extends PreferenceActivity implements
}
// update UI with bookmark data
SharedPreferences spref = getPreferenceManager().getSharedPreferences();
SharedPreferences spref = mgr.getSharedPreferences();
initSettings(spref);
// register for preferences changed notification
getPreferenceManager().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
mgr.getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
// set the correct component names in our preferencescreen settings
setIntentComponentNames();
updateH264Preferences();
}
private void updateH264Preferences() {
if (!LibFreeRDP.hasH264Support()) {
final int preferenceIdList[] = {
R.string.preference_key_h264,
R.string.preference_key_h264_3g
};
PreferenceManager mgr = getPreferenceManager();
for (int id : preferenceIdList) {
final String key = getString(id);
Preference preference = mgr.findPreference(key);
if (preference != null) {
preference.setEnabled(false);
}
}
}
}
private void updateBookmarkFromFile(ManualBookmark bookmark,
@ -672,5 +696,4 @@ public class BookmarkActivity extends PreferenceActivity implements
}
}
}
}

View File

@ -26,10 +26,12 @@ import java.util.ArrayList;
public class LibFreeRDP {
private static final String TAG = "LibFreeRDP";
private static EventListener listener;
private static boolean mHasH264 = true;
static {
final String h264 = "openh264";
final String[] libraries = {
"openh264", "freerdp-openssl", "jpeg", "winpr2",
h264, "freerdp-openssl", "jpeg", "winpr2",
"freerdp2", "freerdp-client2", "freerdp-android2"};
final String LD_PATH = System.getProperty("java.library.path");
@ -39,10 +41,17 @@ public class LibFreeRDP {
System.loadLibrary(lib);
} catch (UnsatisfiedLinkError e) {
Log.e(TAG, "Failed to load library " + lib + ": " + e.toString());
if (lib.equals(h264)) {
mHasH264 = false;
}
}
}
}
public static boolean hasH264Support() {
return mHasH264;
}
private static native String freerdp_get_jni_version();
private static native String freerdp_get_version();
@ -118,7 +127,7 @@ public class LibFreeRDP {
final String clientName = ApplicationSettingsActivity.getClientName(context);
if (!clientName.isEmpty()) {
args.add("/client-hostname:\""+clientName+"\"");
args.add("/client-hostname:\"" + clientName + "\"");
}
String certName = "";
if (bookmark.getType() != BookmarkBase.TYPE_MANUAL) {
@ -260,7 +269,7 @@ public class LibFreeRDP {
final String clientName = ApplicationSettingsActivity.getClientName(context);
if (!clientName.isEmpty()) {
args.add("/client-hostname:\""+clientName+"\"");
args.add("/client-hostname:\"" + clientName + "\"");
}
// Parse hostname and port. Set to 'v' argument

View File

@ -318,4 +318,6 @@
<string name="pref_ringtone_silent">Silent</string>
<string name="pref_title_vibrate">Vibrate</string>
<string name="preference_key_h264_3g" translatable="false">bookmark.perf_gfx_h264</string>
<string name="preference_key_h264" translatable="false">bookmark.perf_gfx_h264</string>
</resources>

View File

@ -18,7 +18,7 @@
android:title="@string/settings_perf_gfx" />
<CheckBoxPreference
android:dependency="bookmark.perf_gfx"
android:key="bookmark.perf_gfx_h264"
android:key="@string/preference_key_h264"
android:title="@string/settings_perf_gfx_h264" />
<CheckBoxPreference
android:key="bookmark.perf_wallpaper"

View File

@ -13,6 +13,13 @@
<CheckBoxPreference
android:key="bookmark.perf_remotefx_3g"
android:title="@string/settings_perf_remotefx" />
<CheckBoxPreference
android:key="bookmark.perf_gfx_3g"
android:title="@string/settings_perf_gfx" />
<CheckBoxPreference
android:dependency="bookmark.perf_gfx_3g"
android:key="@string/preference_key_h264_3g"
android:title="@string/settings_perf_gfx_h264" />
<CheckBoxPreference
android:key="bookmark.perf_wallpaper_3g"
android:title="@string/settings_perf_wallpaper" />