2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-08-22 18:07:55 +00:00

Compatibility with android 2.3

This commit is contained in:
Albert Vaca 2013-08-09 22:33:12 +02:00
parent 4d6c741bf1
commit 3ad2d3a384
8 changed files with 136 additions and 9 deletions

View File

@ -37,6 +37,11 @@
android:label="MPRIS controls" android:label="MPRIS controls"
/> />
<activity
android:name="org.kde.connect.CompatSettingsActivity"
android:label="KDE Connect Settings"
/>
<activity <activity
android:name="org.kde.connect.SettingsActivity" android:name="org.kde.connect.SettingsActivity"
android:label="KDE Connect Settings" android:label="KDE Connect Settings"

View File

@ -5,12 +5,12 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Binder; import android.os.Binder;
import android.os.Build;
import android.os.IBinder; import android.os.IBinder;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.util.Log; import android.util.Log;
import org.kde.connect.ComputerLinks.BaseComputerLink; import org.kde.connect.ComputerLinks.BaseComputerLink;
import org.kde.connect.LinkProviders.AvahiTcpLinkProvider;
import org.kde.connect.LinkProviders.BaseLinkProvider; import org.kde.connect.LinkProviders.BaseLinkProvider;
import org.kde.connect.LinkProviders.BroadcastTcpLinkProvider; import org.kde.connect.LinkProviders.BroadcastTcpLinkProvider;
import org.kde.connect.PackageInterfaces.BasePackageInterface; import org.kde.connect.PackageInterfaces.BasePackageInterface;
@ -68,11 +68,13 @@ public class BackgroundService extends Service {
removePackageInterface(BatteryMonitorPackageInterface.class); removePackageInterface(BatteryMonitorPackageInterface.class);
} }
if (Build.VERSION.SDK_INT > 10 && Build.VERSION.SDK_INT != 18) {
if (settings.getBoolean("clipboard_interface", true)) { if (settings.getBoolean("clipboard_interface", true)) {
addPackageInterface(ClipboardPackageInterface.class); addPackageInterface(ClipboardPackageInterface.class);
} else { } else {
removePackageInterface(ClipboardPackageInterface.class); removePackageInterface(ClipboardPackageInterface.class);
} }
}
if (settings.getBoolean("mpris_interface", true)) { if (settings.getBoolean("mpris_interface", true)) {
addPackageInterface(MprisControlPackageInterface.class); addPackageInterface(MprisControlPackageInterface.class);

View File

@ -0,0 +1,60 @@
package org.kde.connect;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.util.Log;
import org.kde.kdeconnect.R;
public class CompatSettingsActivity extends PreferenceActivity {
private SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Log.e("onSharedPreferenceChanged",key+"->"+sharedPreferences.getBoolean(key,true));
BackgroundService.RunCommand(getApplicationContext(), new BackgroundService.InstanceCallback() {
@Override
public void onServiceStart(BackgroundService service) {
service.registerPackageInterfacesFromSettings();
}
});
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
if (Build.VERSION.SDK_INT < 11 || Build.VERSION.SDK_INT == 18) {
CheckBoxPreference p = (CheckBoxPreference)findPreference("clipboard_interface");
p.setEnabled(false);
p.setChecked(false);
p.setSelectable(false);
p.setSummary(R.string.app_not_available);
}
}
@Override
public void onResume() {
super.onResume();
getPreferenceManager().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(preferenceChangeListener);
}
@Override
public void onPause() {
getPreferenceManager().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener);
super.onPause();
}
}

View File

@ -2,6 +2,7 @@ package org.kde.connect;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.Menu; import android.view.Menu;
@ -120,8 +121,13 @@ public class MainActivity extends Activity {
public boolean onMenuItemSelected(int featureId, MenuItem item) { public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()){ switch(item.getItemId()){
case R.id.action_settings: case R.id.action_settings:
if (Build.VERSION.SDK_INT > 10) {
Intent intent = new Intent(this,SettingsActivity.class); Intent intent = new Intent(this,SettingsActivity.class);
startActivity(intent); startActivity(intent);
} else {
Intent intent = new Intent(this,CompatSettingsActivity.class);
startActivity(intent);
}
return true; return true;
default: default:
return super.onMenuItemSelected(featureId, item); return super.onMenuItemSelected(featureId, item);

View File

@ -0,0 +1,43 @@
package org.kde.connect.PackageInterfaces;
import android.text.ClipboardManager;
import android.content.Context;
import org.kde.connect.Device;
import org.kde.connect.NetworkPackage;
public class CompatClipboardPackageInterface extends BasePackageInterface {
private Context context;
private ClipboardManager cm;
@Override
public boolean onCreate(Context context) {
this.context = context;
cm = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE);
return false;
}
@Override
public void onDestroy() {
}
@Override
public boolean onPackageReceived(Device d, NetworkPackage np) {
if (np.getType().equals(NetworkPackage.PACKAGE_TYPE_CLIPBOARD)) {
cm.setText(np.getString("content"));
return true;
}
return false;
}
public boolean onDeviceConnected(Device d) {
return false;
}
}

View File

@ -84,7 +84,7 @@ public class MprisControlPackageInterface extends BasePackageInterface {
public void setNowPlayingUpdatedHandler(Handler h) { public void setNowPlayingUpdatedHandler(Handler h) {
nowPlayingUpdated = h; nowPlayingUpdated = h;
if (!nowPlaying.isEmpty()) h.dispatchMessage(new Message()); if (nowPlaying.length() > 0) h.dispatchMessage(new Message());
requestNowPlaying(); requestNowPlaying();
} }
@ -94,7 +94,7 @@ public class MprisControlPackageInterface extends BasePackageInterface {
public void setPlayerListUpdatedHandler(Handler h) { public void setPlayerListUpdatedHandler(Handler h) {
playerListUpdated = h; playerListUpdated = h;
if (!playerList.isEmpty()) h.dispatchMessage(new Message()); if (playerList.size() > 0) h.dispatchMessage(new Message());
requestPlayerList(); requestPlayerList();
} }

View File

@ -2,7 +2,10 @@ package org.kde.connect;
import android.app.Activity; import android.app.Activity;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.util.Log; import android.util.Log;
@ -30,6 +33,13 @@ public class SettingsFragment extends PreferenceFragment {
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings); addPreferencesFromResource(R.xml.settings);
if (Build.VERSION.SDK_INT < 11 || Build.VERSION.SDK_INT == 18) {
CheckBoxPreference p = (CheckBoxPreference)findPreference("clipboard_interface");
p.setEnabled(false);
p.setChecked(false);
p.setSelectable(false);
p.setSummary(R.string.app_not_available);
}
} }
@Override @Override

View File

@ -14,6 +14,7 @@
<string name="pref_enable_mpris_interface_desc">Control audio/video from your phone</string> <string name="pref_enable_mpris_interface_desc">Control audio/video from your phone</string>
<string name="pref_enable_ping_interface">Pings</string> <string name="pref_enable_ping_interface">Pings</string>
<string name="pref_enable_ping_interface_desc">Enable sending and receiving ping notifications</string> <string name="pref_enable_ping_interface_desc">Enable sending and receiving ping notifications</string>
<string name="app_not_available">This feature is not available in your Android version</string>
</resources> </resources>