package triaina.webview.bridge;
import javax.inject.Inject;
import triaina.webview.WebViewBridge;
import triaina.webview.annotation.Bridge;
import triaina.webview.entity.device.WiFiP2PEnableParams;
import triaina.webview.receiver.WiFiDirectBroadcastReceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
import android.net.wifi.p2p.WifiP2pManager;
import android.net.wifi.p2p.WifiP2pManager.Channel;
import android.os.Build;
import android.util.Log;
public class WiFiP2PBridge implements BridgeLifecyclable {
private static final String TAG = WiFiP2PBridge.class.getSimpleName();
@Inject
private Context mContext;
private Object mManager;
private Object mChannel;
private BroadcastReceiver mReceiver;
private WiFiP2PEnableParams mEnableParams;
private WebViewBridge mBridge;
public WiFiP2PBridge(WebViewBridge bridge) {
mBridge = bridge;
}
@Bridge("system.wifip2p.enable")
public void enable(WiFiP2PEnableParams params) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH
|| mEnableParams != null)
return;
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
intentFilter
.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
intentFilter
.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
mEnableParams = params;
mManager = mContext.getSystemService(Context.WIFI_P2P_SERVICE);
mChannel = ((WifiP2pManager) mManager).initialize(mContext,
mContext.getMainLooper(), null);
mReceiver = new WiFiDirectBroadcastReceiver((WifiP2pManager) mManager,
(Channel) mChannel, mBridge, params.getDiscoverCallback());
mContext.registerReceiver(mReceiver, intentFilter);
}
@Bridge("system.wifip2p.discover")
public void discover() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH
|| mEnableParams == null)
return;
((WifiP2pManager) mManager).discoverPeers((Channel) mChannel,
new WifiP2pManager.ActionListener() {
@Override
public void onSuccess() {
Log.d(TAG, "Discovery Initiated");
}
@Override
public void onFailure(int reasonCode) {
Log.d(TAG, "Discovery Failed : " + reasonCode);
}
});
}
@Bridge("system.wifip2p.disable")
public void disable() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH
|| mEnableParams == null)
return;
mContext.unregisterReceiver(mReceiver);
mReceiver = null;
mChannel = null;
mManager = null;
mEnableParams = null;
}
@Override
public void onResume() {
}
@Override
public void onPause() {
}
@Override
public void onDestroy() {
disable();
}
}