From 0119e703ff4a8f3201610c2866702f7f92da0b26 Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 26 Jul 2020 18:11:10 +0200 Subject: initial import --- .../javispedro/autobluetether/BtPanWrapper.java | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 app/src/main/java/com/javispedro/autobluetether/BtPanWrapper.java (limited to 'app/src/main/java/com/javispedro/autobluetether/BtPanWrapper.java') diff --git a/app/src/main/java/com/javispedro/autobluetether/BtPanWrapper.java b/app/src/main/java/com/javispedro/autobluetether/BtPanWrapper.java new file mode 100644 index 0000000..40cd84a --- /dev/null +++ b/app/src/main/java/com/javispedro/autobluetether/BtPanWrapper.java @@ -0,0 +1,39 @@ +package com.javispedro.autobluetether; + +import android.bluetooth.BluetoothProfile; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +public class BtPanWrapper { + private static final String CLASS_NAME = "android.bluetooth.BluetoothPan"; + public static final int PROFILE_ID = 5 /*BluetoothProfile.PAN*/; + private final BluetoothProfile p; + + public BtPanWrapper(BluetoothProfile pan) { + p = pan; + } + + private Object invoke(String methodName, Class[] parameterTypes, Object[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException { + Class c = Class.forName(CLASS_NAME); + Method m = c.getDeclaredMethod(methodName, parameterTypes); + return m.invoke(this.p, args); + } + + public boolean isTetheringOn() { + try { + return (boolean) invoke("isTetheringOn", null, null); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + public void setBluetoothTethering(boolean on) { + try { + invoke("setBluetoothTethering", new Class[] {Boolean.TYPE}, new Object[] {on}); + } catch (Exception e) { + e.printStackTrace(); + } + } +} -- cgit v1.2.3