андроид определение местоположения не вызывая переходы
Всем Привет,
Я пытаюсь создать простую геозону и пытаюсь sysout, когда я вхожу или выхожу из геозоны. Я попробовал простой позитивный сценарий и использовал приложение geofencing mock с сайта разработчика android, но не получил никаких ответов.
Моя основная деятельность выглядит так..
public class MainActivity extends ActionBarActivity implements GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener, LocationListener, com.google.android.gms.location.LocationListener, LocationClient.OnAddGeofencesResultListener { private LocationClient locationClient; private ArrayList<Geofence> geoFenceList; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); geoFenceList = new ArrayList<Geofence>(); locationClient = new LocationClient(this, this, this); locationClient.connect(); } @Override public void onConnected(Bundle connectionHint) { Geofence geofence = new Geofence.Builder().setRequestId("1") .setCircularRegion(29.569332, 98.591356, 100) .setExpirationDuration(Geofence.NEVER_EXPIRE) .setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER).build(); geoFenceList.add(geofence); locationClient.addGeofences(geoFenceList, createPendingIntent(), this); Toast.makeText(this, "Location client connected", Toast.LENGTH_SHORT).show(); } private PendingIntent createPendingIntent() { Intent intent = new Intent(this, ReceiveGeofenceTransitionIntentService.class); //Intent intent1 = new Intent("com.aol.android.geofence.ACTION_RECEIVE_GEOFENCE"); return PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); } @Override public void onAddGeofencesResult(int statusCode, String[] geofenceRequestIds) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location arg0) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String arg0) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String arg0) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { // TODO Auto-generated method stub } @Override public void onConnectionFailed(ConnectionResult result) {} @Override public void onDisconnected() { // TODO Auto-generated method stub } }
Намеренный класс обслуживания ....
public class ReceiveGeofenceTransitionIntentService extends IntentService { public ReceiveGeofenceTransitionIntentService() { super("ReceiveGeofenceTransitionsIntentService"); } @Override protected void onHandleIntent(Intent intent) { // Create a local broadcast Intent Intent broadcastIntent = new Intent(); // Give it the category for all intents sent by the Intent Service broadcastIntent.addCategory(GeofenceUtils.CATEGORY_LOCATION_SERVICES); // Get the type of transition (entry or exit) int transition = LocationClient.getGeofenceTransition(intent); if ((transition == Geofence.GEOFENCE_TRANSITION_ENTER) || (transition == Geofence.GEOFENCE_TRANSITION_EXIT)) System.out.println("Geofence Transition occured!!!!!!!!!!"); Toast.makeText(this, "Geofence Transition occured", Toast.LENGTH_SHORT).show(); { } } }
Я не в состоянии понять, где я ошибаюсь. Я даю два места в приложении mock geofence, одно из которых я строю геозону, а другое довольно далеко.Я мог видеть переход моего устройства в google туда и обратно между этими двумя местоположениями, но я не получаю никаких уведомлений о переходе от моего приложения.
Мой манифест выглядит так....
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.ocrvin" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <service android:name="com.aol.android.geofence.ReceiveTransitionsIntentService" android:exported="false" > </service> <intent-filter > <action android:name="com.aol.android.geofence.ACTION_RECEIVE_GEOFENCE"/> </intent-filter> </receiver> <activity android:name="com.prototype.ocrvin.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/> </manifest>
Пожалуйста, помогите мне, так как я застрял в этом на много дней.
ridoy
Вы тестировали его в реальном устройстве? Если да, то попробуйте еще раз после перезагрузки устройства.