mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-12-26 18:45:49 +01:00
Allow to select preferred music player in preferences, closes #112
This commit is contained in:
parent
de74a033f6
commit
6e3c839608
@ -228,9 +228,7 @@
|
|||||||
android:name=".externalevents.MusicPlaybackReceiver"
|
android:name=".externalevents.MusicPlaybackReceiver"
|
||||||
android:enabled="false">
|
android:enabled="false">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="com.andrew.apollo.metachanged" />
|
<action android:name="com.android.music.metachanged"/>
|
||||||
<action android:name="com.cyanogenmod.eleven.metachanged" />
|
|
||||||
<action android:name="com.spotify.music.metadatachanged" />
|
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
<receiver
|
<receiver
|
||||||
|
@ -1,10 +1,15 @@
|
|||||||
package nodomain.freeyourgadget.gadgetbridge.activities;
|
package nodomain.freeyourgadget.gadgetbridge.activities;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.preference.ListPreference;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.support.v4.content.LocalBroadcastManager;
|
import android.support.v4.content.LocalBroadcastManager;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandPreferencesActivity;
|
import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandPreferencesActivity;
|
||||||
|
|
||||||
@ -68,13 +73,40 @@ public class SettingsActivity extends AbstractSettingsActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Get all receivers of Media Buttons
|
||||||
|
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
|
||||||
|
|
||||||
|
PackageManager pm = getPackageManager();
|
||||||
|
List<ResolveInfo> mediaReceivers = pm.queryBroadcastReceivers(mediaButtonIntent,
|
||||||
|
PackageManager.GET_INTENT_FILTERS | PackageManager.GET_RESOLVED_FILTER);
|
||||||
|
|
||||||
|
|
||||||
|
CharSequence[] newEntries = new CharSequence[mediaReceivers.size() + 1];
|
||||||
|
CharSequence[] newValues = new CharSequence[mediaReceivers.size() + 1];
|
||||||
|
newEntries[0] = getString(R.string.pref_default);
|
||||||
|
newValues[0] = "default";
|
||||||
|
|
||||||
|
int i = 1;
|
||||||
|
for (ResolveInfo resolveInfo : mediaReceivers) {
|
||||||
|
newEntries[i] = resolveInfo.activityInfo.loadLabel(pm);
|
||||||
|
newValues[i] = resolveInfo.activityInfo.packageName;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
final ListPreference audioPlayer = (ListPreference) findPreference("audio_player");
|
||||||
|
audioPlayer.setEntries(newEntries);
|
||||||
|
audioPlayer.setEntryValues(newValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String[] getPreferenceKeysWithSummary() {
|
protected String[] getPreferenceKeysWithSummary() {
|
||||||
return new String[]{
|
return new String[]{
|
||||||
|
"audio_player",
|
||||||
|
"notification_mode_sms",
|
||||||
|
"notification_mode_k9mail",
|
||||||
"pebble_emu_addr",
|
"pebble_emu_addr",
|
||||||
"pebble_emu_port"
|
"pebble_emu_port",
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,19 +18,6 @@ public class MusicPlaybackReceiver extends BroadcastReceiver {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
String action = intent.getAction();
|
|
||||||
int lastDot = action.lastIndexOf(".");
|
|
||||||
String source = action.substring(0, lastDot);
|
|
||||||
|
|
||||||
if (!source.equals(mLastSource)) {
|
|
||||||
mLastSource = source;
|
|
||||||
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
|
|
||||||
SharedPreferences.Editor edit = sharedPrefs.edit();
|
|
||||||
edit.putString("last_audiosource", mLastSource);
|
|
||||||
LOG.info("set last audiosource to " + mLastSource);
|
|
||||||
edit.apply();
|
|
||||||
}
|
|
||||||
|
|
||||||
String artist = intent.getStringExtra("artist");
|
String artist = intent.getStringExtra("artist");
|
||||||
String album = intent.getStringExtra("album");
|
String album = intent.getStringExtra("album");
|
||||||
String track = intent.getStringExtra("track");
|
String track = intent.getStringExtra("track");
|
||||||
|
@ -54,23 +54,23 @@ public class GBMusicControlReceiver extends BroadcastReceiver {
|
|||||||
|
|
||||||
if (keyCode != -1) {
|
if (keyCode != -1) {
|
||||||
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
|
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
String audioSource = sharedPrefs.getString("last_audiosource", null);
|
String audioPlayer = sharedPrefs.getString("audio_player", "default");
|
||||||
|
|
||||||
long eventtime = SystemClock.uptimeMillis();
|
long eventtime = SystemClock.uptimeMillis();
|
||||||
|
|
||||||
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
|
Intent downIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
|
||||||
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, keyCode, 0);
|
KeyEvent downEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_DOWN, keyCode, 0);
|
||||||
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
|
downIntent.putExtra(Intent.EXTRA_KEY_EVENT, downEvent);
|
||||||
if (audioSource != null) {
|
if (!"default".equals(audioPlayer)) {
|
||||||
downIntent.setPackage(audioSource);
|
downIntent.setPackage(audioPlayer);
|
||||||
}
|
}
|
||||||
context.sendOrderedBroadcast(downIntent, null);
|
context.sendOrderedBroadcast(downIntent, null);
|
||||||
|
|
||||||
Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
|
Intent upIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null);
|
||||||
KeyEvent upEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_UP, keyCode, 0);
|
KeyEvent upEvent = new KeyEvent(eventtime, eventtime, KeyEvent.ACTION_UP, keyCode, 0);
|
||||||
upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent);
|
upIntent.putExtra(Intent.EXTRA_KEY_EVENT, upEvent);
|
||||||
if (audioSource != null) {
|
if (audioPlayer != null) {
|
||||||
upIntent.setPackage(audioSource);
|
upIntent.setPackage(audioPlayer);
|
||||||
}
|
}
|
||||||
context.sendOrderedBroadcast(upIntent, null);
|
context.sendOrderedBroadcast(upIntent, null);
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,8 @@
|
|||||||
|
|
||||||
<string name="pref_header_general">General Settings</string>
|
<string name="pref_header_general">General Settings</string>
|
||||||
<string name="pref_title_general_autoconnectonbluetooth">Connect to device when Bluetooth turned on</string>
|
<string name="pref_title_general_autoconnectonbluetooth">Connect to device when Bluetooth turned on</string>
|
||||||
|
<string name="pref_title_audo_player">Preferred audio player</string>
|
||||||
|
<string name="pref_default">default</string>
|
||||||
<string name="pref_header_datetime">Date and Time</string>
|
<string name="pref_header_datetime">Date and Time</string>
|
||||||
<string name="pref_title_datetime_syctimeonconnect">Sync time</string>
|
<string name="pref_title_datetime_syctimeonconnect">Sync time</string>
|
||||||
<string name="pref_summary_datetime_syctimeonconnect">Sync time to device when connecting and when time or timezone changes on Android</string>
|
<string name="pref_summary_datetime_syctimeonconnect">Sync time to device when connecting and when time or timezone changes on Android</string>
|
||||||
|
@ -7,6 +7,10 @@
|
|||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="general_autoconnectonbluetooth"
|
android:key="general_autoconnectonbluetooth"
|
||||||
android:title="@string/pref_title_general_autoconnectonbluetooth" />
|
android:title="@string/pref_title_general_autoconnectonbluetooth" />
|
||||||
|
<ListPreference
|
||||||
|
android:defaultValue="default"
|
||||||
|
android:key="audio_player"
|
||||||
|
android:title="@string/pref_title_audo_player" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="pref_key_datetime"
|
android:key="pref_key_datetime"
|
||||||
@ -60,26 +64,26 @@
|
|||||||
android:key="pref_key_device_specific_category"
|
android:key="pref_key_device_specific_category"
|
||||||
android:title="@string/preferences_category_device_specific_settings">
|
android:title="@string/preferences_category_device_specific_settings">
|
||||||
<Preference
|
<Preference
|
||||||
android:key="pref_key_miband"
|
|
||||||
android:icon="@drawable/ic_device_miband"
|
android:icon="@drawable/ic_device_miband"
|
||||||
|
android:key="pref_key_miband"
|
||||||
android:title="@string/preferences_miband_settings" />
|
android:title="@string/preferences_miband_settings" />
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
android:key="pref_key_pebble"
|
|
||||||
android:icon="@drawable/ic_device_pebble"
|
android:icon="@drawable/ic_device_pebble"
|
||||||
android:title="@string/pref_title_pebble_settings" >
|
android:key="pref_key_pebble"
|
||||||
|
android:title="@string/pref_title_pebble_settings">
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="pref_key_development"
|
android:key="pref_key_development"
|
||||||
android:title="@string/pref_header_development">
|
android:title="@string/pref_header_development">
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="pebble_force_protocol"
|
android:key="pebble_force_protocol"
|
||||||
android:title="@string/pref_title_pebble_forceprotocol"
|
android:summary="@string/pref_summary_pebble_forceprotocol"
|
||||||
android:summary="@string/pref_summary_pebble_forceprotocol" />
|
android:title="@string/pref_title_pebble_forceprotocol" />
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="pebble_force_untested"
|
android:key="pebble_force_untested"
|
||||||
android:title="@string/pref_title_pebble_forceuntested"
|
android:summary="@string/pref_summary_pebble_forceuntested"
|
||||||
android:summary="@string/pref_summary_pebble_forceuntested" />
|
android:title="@string/pref_title_pebble_forceuntested" />
|
||||||
<EditTextPreference
|
<EditTextPreference
|
||||||
android:digits="0123456789."
|
android:digits="0123456789."
|
||||||
android:key="pebble_emu_addr"
|
android:key="pebble_emu_addr"
|
||||||
|
Loading…
Reference in New Issue
Block a user