2011-10-30 8 views
0

AndroidのLocationManagerに問題があります。私は次のクラスを持っています:Androidロケーションマネージャがメソッドを呼び出さない

package com.flyer; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.widget.Toast; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.apache.http.util.EntityUtils; 
import org.json.JSONArray; 
import org.json.JSONObject; 

import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

public class ContentProvider implements LocationListener { 
    private Activity connectedActivity; 

    public ContentProvider(Activity connectedActivity) { 
     this.connectedActivity = connectedActivity; 
     LocationManager locationManager = (LocationManager)connectedActivity.getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, this); 
    } 

    public void onLocationChanged(Location loc) 
    { 
     MyActivity.rowsData.add(new RowData(0, "Test", "Val: " + Math.random(), 0)); 
    } 

    public void onProviderDisabled(String provider) 
    { 
     Intent in = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     connectedActivity.startActivity(in); 
    } 

    public void onProviderEnabled(String provider) 
    { 
     Toast.makeText(connectedActivity.getApplicationContext(), 
       "Gps Enabled", 
       Toast.LENGTH_SHORT).show(); 

    } 

    public void onStatusChanged(String provider, int status, Bundle extras) 
    { 
     MyActivity.rowsData.add(new RowData(0, "Test", "Val: "+Math.random(), 0)); 
    } 


} 

私は主な活動の中でコンストラクタContentProvider(this)を呼び出します。しかし、私がエミュレータにtelnetして地理的修正を行うと、何も起こりません。

コンテンツをブレークポイントで設定しようとしましたが、到達しません。

また、Android 2.1用に開発しています。

ご協力いただければ幸いです。

警告行き方:

10-30 21:10:38.787: WARN/GpsLocationProvider(52): Could not open GPS configuration file /etc/gps.conf 

答えて

1

あなたのマニフェストXMLを公開することはできますか?必要な権限を追加しましたか?

<android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<android:name="android.permission.ACCESS_FINE_LOCATION" /> 

logcatトレースで例外が発生しましたか?あなたのエミュレータで設定の問題を除外するために、これを実際のデバイスで試すことをお勧めします。 FYI

、ここで私はadb logcatを使用して私のアプリのデバッグ・トレースをオンにする方法は次のとおりです。

adb shell stop 
adb shell setprop log.tag.MYTAG DEBUG 
adb shell start 
adb logcat MYTAG:D *:W > c:\temp\trace.txt 

DEBUGレベルのトレースの周り混乱することを避けるために、私はあなたがLog.INFOレベルでログ記録に固執示唆しています。その場合は、最後のコマンドだけが必要です。

+0

私は権限を追加しました。私は警告を得て、OPに追加します。 Furter、関連するエラーは見つかりません。 – RobotRock

+0

そのエラーをGoogleで検索すると、エミュレータで場所を設定する必要があることが示されます。http://groups.google.com/group/android-framework/msg/f94e0bbb227c03c6実際の携帯電話と問題はありません... –

+0

2台の電話機でテストし、onProviderDisabledとonProviderEnabledを取得しますが、onLocationChangedには到達しません。どういうわけか、それはまだ適切に動作していない、何か考えですか? – RobotRock

関連する問題