OpenPods
OpenPods copied to clipboard
Added sending broadcast function for integration with other apps
I wanted to have Airpod integration in my own custom launcher and this seems to be a nice way to do so. I appreciate the community's effort in reverse engineering this :+1:
Edit: Updated README to reflect this change.
Usage:
Intent parameters
public static final String ACTION_STATUS = "com.dosse.airpods.status";
public static final String EXTRA_IS_ALL_DISCONNECTED = "isAllDisconnected";
public static final String EXTRA_MODEL = "model";
public static final String EXTRA_IS_SINGLE = "isSingle";
public static final String EXTRA_LEFT_POD_STATUS = "leftPodStatus";
public static final String EXTRA_RIGHT_POD_STATUS = "rightPodStatus";
public static final String EXTRA_POD_CASE_STATUS = "caseStatus";
public static final String EXTRA_LEFT_POD_IN_EAR = "leftPodInEar";
public static final String EXTRA_RIGHT_POD_IN_EAR = "rightPodInEar";
public static final String EXTRA_SINGLE_POD_STATUS = "singlePodStatus";
public static final String EXTRA_LEFT_POD_CHARGING = "isLeftPodCharging";
public static final String EXTRA_RIGHT_POD_CHARGING = "isRightPodCharging";
public static final String EXTRA_POD_CASE_CHARGING = "isCaseCharging";
public static final String EXTRA_SINGLE_POD_CHARGING = "isSinglePodCharging";
AndroidManifest.xml
<receiver android:name=".AirpodReceiver"
android:exported="true"
android:permission="com.dosse.airpods.permission.ACCESS_AIRPOD_INFORMATION">
<intent-filter>
<action android:name="com.dosse.airpods.status"/>
</intent-filter>
</receiver>
Check and request permission
if (checkSelfPermission(context, "com.dosse.airpods.permission.ACCESS_AIRPOD_INFORMATION") == PackageManager.PERMISSION_DENIED) {
context.requestPermissions(new String[]{"com.dosse.airpods.permission.ACCESS_AIRPOD_INFORMATION"}, 201);
}
Receiver
public class AirpodReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_STATUS)) {
// Do something with "intent.getExtras()" here
}
}
}
Register Receiver
IntentFilter airpodFilter = new IntentFilter(ACTION_STATUS);
AirpodReceiver airpodReceiver = new AirpodReceiver();
registerReceiver(airpodReceiver, airpodFilter);
Maybe work with permission would be better. https://developer.android.com/develop/background-work/background-tasks/broadcasts#restrict-broadcasts-permissions
Added a custom permission, since Bluetooth LE permission, Location permission, etc... have already been handled by OpenPods