0

私は Android を初めて使用し、ウィジェットが Location latlong を表示するアプリケーションを開発しています。私は構成活動でこれをやっています。更新ボタンで同じ場所が更新されます。すべて正常に動作していますが、アクティビティ画面がウィジェットで点滅します。アクティビティ画面が前に点滅しないように、サービスから同じ出力が必要です。

この目的のために、更新ボタンのクリックで起動するサービスを作成しましたが、サービスが許可しないマップビュー、ロケーションマネージャーなどを使用したときにどのようにコーディングできますか。

4

1 に答える 1

0

サービスでは、次のようなものを使用できます。

    private void startPositionListener() {
        if (mLocationManager == null) {
            // Get the location manager
            mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        }
        try {
            gpsEnabled = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
            networkEnabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
        } catch (Exception e) {
            Log.e(TAG, e.getLocalizedMessage());
        }
        // Register the listener with the Location Manager to receive location updates
        if(gpsEnabled) {
            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 1, mGpsListener);
            Log.d(TAG, "GPS Listener started.");
        } else if(networkEnabled) { // Checking for GSM
            mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 6000, 1, mNetworkListener);
            Log.d(TAG, "Network Listener started.");
        }
}

WheremNetworkListenermGpsListenerare は を実装するクラスですLocationListener。記入しなければならない唯一の方法はonLocationChanged(Location)(サービス内の位置データを取得する場所です) です。次のような作業が終わったら、これらのオブジェクトの更新を停止することを忘れないでください。

private void stopPositionListner() {
        if (mLocationManager != null) {
            mLocationManager.removeUpdates(mGpsListener);
            mLocationManager.removeUpdates(mNetworkListener);
            Log.d(TAG, "Position Listener stopped.");
        }
    }
于 2012-08-03T08:19:38.950 に答える