친구와 저는 wifi-direct를 사용하여 Android 기기간에 동기화 된 음악을 스트리밍하는 앱을 개발 중입니다. 우리의 문제는 일단 휴대 전화가 연결되면 응용 프로그램이 잘 작동하지만 모든 AOSP 장치에서 Wi-Fi Direct가 Wi-Fi Direct 메뉴에 들어올 때만 켜지 기 때문에 전화 연결을 위해 일부 작업이 필요하다는 것입니다.). 이것은 응용 프로그램 내 연결을 다소 어렵게 만듭니다. 우리는 코드에서 wifi direct를 켜고 계속 유지할 수있는 방법이 있는지 궁금하게 생각하고있었습니다 (누군가 Reflection을 사용하여 환상적인 방법을 사용하는 방법에 대한 자세한 설명을 참조 할 수 있다면).AOSP 기기에서 Wi-Fi Direct 켜기 유지
감사합니다. 우리가 우리가 와이파이 직접 우리의 응용 프로그램에 기능을 추가 할 때와 레슬링 봤는데 질문이었다 ...
public class Reflector {
static Method turnOnICS;
static Method turnOnJB;
static Method turnOffICS;
public static void turnOnP2P(WifiP2pManager m, Channel c) {
//Log.v("button", "turnOnP2P");
if (android.os.Build.VERSION.SDK_INT == 14 || android.os.Build.VERSION.SDK_INT == 15) {
//Log.v("version", "Version is ICS");
try {
turnOnICS = WifiP2pManager.class.getDeclaredMethod("enableP2p",WifiP2pManager.Channel.class);
turnOnICS.setAccessible(true);
turnOnICS.invoke(m, c);
} catch (NoSuchMethodException e) {
Log.v("ics_error", "ICS enableP2p() not found");
} catch (Exception e) {
Log.v("ics_error", "turnOnICS invocation failure");
}
} else if (android.os.Build.VERSION.SDK_INT == 16 || android.os.Build.VERSION.SDK_INT == 17) {
//Log.v("version", "Version is JB");
try {
turnOnJB = NsdManager.class.getDeclaredMethod("setEnabled", boolean.class);
turnOnJB.setAccessible(true);
turnOnJB.invoke(NsdManager.class, true);
//must feed it an nsdmanager, but none exists in wifidirectactivity
Log.v("nsd", "problem");
} catch (NoSuchMethodException e) {
Log.v("jb_error", "JB setEnabled() not found");
} catch (Exception e) {
Log.v("jb_error", "turnOnJB invocation failure");
e.printStackTrace();
}
}
}
public static void turnOffP2P(WifiP2pManager m, Channel c) {
//Log.v("button", "turnOffP2P");
if (android.os.Build.VERSION.SDK_INT == 14 || android.os.Build.VERSION.SDK_INT == 15) {
//Log.v("version", "Version is ICS");
try {
turnOffICS = WifiP2pManager.class.getDeclaredMethod("disableP2p", WifiP2pManager.Channel.class);
turnOffICS.setAccessible(true);
turnOffICS.invoke(m, c);
} catch (NoSuchMethodException e) {
Log.v("ics_error", "ICS disableP2P() not found");
} catch (Exception e) {
Log.v("ics_error", "turnOffICS invocation failure");
}
}
}
public static void printAll(){
Method[] list = WifiP2pManager.class.getDeclaredMethods();
for(Method m : list){
Log.v("tag",m.getName());
}
}
}
Wifi Direct를 사용하는 방법을 찾았습니까? 나는 wifi가 직접 나가면 수동으로 설정을 켜야한다는 같은 문제에 직면 해있다. – windchime
아니, 우리는 그것을 결코 이해하지 못했다. 잘하면 안드로이드 devs이 기능을 지금까지 더 접근 가능하게 만들었습니다. – cbartondock