2011-12-15 7 views
0

私は自分のlocationListenerに問題があります。ネットワークリスナーはポイントを取得しません

これは私の「MyLocationListenerNetWork」:

public class MyLocationListenerNetwork implements LocationListener { 

    public MyLocationListenerNetwork(){ 
     super(); 
    } 

    @Override 
    public void onLocationChanged(Location loc) { 
     if(loc!=null){ 

     } 
    } 

    @Override 
    public void onProviderDisabled(String pDisabled) { 
      } 

    @Override 
    public void onProviderEnabled(String pEnabled) { 
     } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 
} 

ポイントである、私は「要求」リスナーはネットワーク・ポイントを取ることにしたいサービスを、持っていること。私は私のonCreate()でこれが好きです

問題なしでポイントを取得します。問題は、それが多くのバッテリーを消費することです、私はそれをすべての時間、それはバッテリーの30~40%を消費するようにした場合。私は一定期間だけそれをオンにしたいと思います。 それで、サービスの中にスレッドがあり、このスレッドの中では、一定期間(5分)だけリスナーをオンにしますが、リスナーは任意のポイントを取得しません。 。

誰でも知っていますか?

答えて

0

私はあなたのreQuestLocationUpdates方法でパラメータをチェックだと思い、MINTIME

は、あなたがこのためのスレッドを必要としないのではだからMINTIMEパラメータで位置要求時間を言及し、あなたが必要なものです。 。

public void requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener) 

以来:APIレベル1

レジスタ現在の交流名前付きプロバイダが定期的に通知する必要があります。指定されたLocationListenerは、定期的に現在のLocationまたは状態の更新とともに呼び出されます。

最新の場所を受け取るまでに時間がかかる場合があります。直接の場所が必要な場合、アプリケーションはgetLastKnownLocation(String)メソッドを使用できます。

ユーザーがプロバイダを無効にすると、更新が停止し、onProviderDisabled(String)メソッドが呼び出されます。プロバイダが再び有効になると、onProviderEnabled(String)メソッドが呼び出され、位置の更新が再び開始されます。

通知の頻度は、minTimeおよびminDistanceパラメータを使用して制御できます。 minTimeが0より大きい場合、電力を節約するためにLocationManager間のminTimeミリ秒間、LocationManagerが潜在的に休止する可能性があります。 minDistanceが0より大きい場合、デバイスはminDistanceメーターで移動する場合にのみブロードキャストされます。デバイスは、GPSや無線無線のを保つことによってあまりにも多くの電力を消費しないように十分に高いMINTIMEの設定についての注意が必要である0

バックグラウンドサービスに両方のパラメータを設定し、できるだけ頻繁に通知を取得するにはすべての時間。特に、60000ms未満の値は推奨されません。

呼び出し元のスレッドは、呼び出し側のアクティビティのメインスレッドなどのルーパースレッドである必要があります。

パラメータ

プロバイダ

MINTIMEにミリ秒単位での通知のための最小時間間隔を、登録すると、プロバイダの名前。このフィールドは電力を節約するためのヒントとしてのみ使用され、ロケーション更新間の実際の時間はこの値より大きくても小さくてもかまいません。

minDistance onLocationChanged(ロケーション)メソッドは、各位置更新のために呼び出されるそのメートル

リスナー {#linkのLocationListener}で通知するための最小距離間隔、

EDIT:

GPSサービスは、通常は空腹です。 GPSサービスが必要なのか、単に位置情報の更新を探していますか? Androidには、ロケーションベースのサービスのための良いスタートアップドコが付属しています。 http://developer.android.com/guide/topics/location/obtaining-user-location.html このドキュメントの手順に従って、最適なユーザーの場所を見つけてください。

適切なタイミングで更新を待機しないようにしてください。ユーザーは、1つのアプリが動作していなくてもバッテリーを消耗させようとしていることに満足していません。

バックグラウンドタスクとしてアプリを作成してみてください。

+0

ありがとうございますが、とにかく動作しません。私はあなたが言ったことをしようとしていますが、結果は同じです。アプリケーションは同じ量のエネルギーを消費します。Btw、私は "onLocationChanged"メソッドに "stop point"を置きます。そして、それは600秒で取るためにリスナーのrequestUpdateを置いても毎秒ポイントをとります.......)。これがAndroidのAPIの問題なのか、それとも正しく使用しないのか分かりません。とにかく助けてくれてありがとう! – zapotec

+0

は機能しません。私の答えの編集部分のURLを見ましたか? – user370305

+0

もう一度ありがとうございます。 onCreate内でlocationListenerを使用した後、それは機能します。そして、うーん......理由はわかりませんが、私がrequestLocationUpdates(minDistance、minTime)で行った変更が何であれ、それは何も変更されません....毎回場所を更新し続けます....私はminDistance = 200000とminTime = 100000を入れて試してみて、毎秒その位置を取っています....) – zapotec

関連する問題