2012-01-31 5 views
1

私の場所を私の家に出入りするドライブとして追跡し、私の家の特定の範囲に出入りするときにソケット接続を開始するサービスがあるアプリがあります。私が抱えている問題は、主に私が私の家にいて、サービスを始めてから、私の家から追い払うことです。私の家にいる間、私の電話は私のWiFiに接続されています。私の携帯電話は、WiFiが範囲外であることを認識している最中に、私が近づくとモバイルに切り替わります。ソケット接続が切断されると、私の電話は利用可能なデータを持たないので、それは何をすべきかをしません。AndroidをリセットするsetNetworkPreference

私が考えているのは、サービスが開始されたときにネットワークの設定をモバイルに設定することです。これは私のコードです。

public int onStartCommand(Intent intent, int flags, int reqId) { 
      cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
      cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); 
      //my gps tracking and socket connection code, stopSelf(); gets called in here 
    } 

や時間によって、私の距離は、モバイル接続しているソケット接続を発射するように、その後..

public void onDestroy() { 
      super.onDestroy(); 
      cm.setNetworkPreference(ConnectivityManager.DEFAULT_NETWORK_PREFERENCE); 
      //other code: gps cancel, wakelock release, etc 
    } 

このコードは、すぐに携帯電話に自分の携帯電話を強制します。このコードの問題は、onDestroyの行cm.setNetworkPreference(ConnectivityManager.DEFAULT_NETWORK_PREFERENCE);は私の電話を無線LANに戻しますが、無線LANはもう使用できないため、私の電話は何にも接続されていません。

私の電話に戻ってそれがデフォルト状態であることを伝える方法はありますか?使用可能であれば無線LANです。ありがとう。

答えて

関連する問題