Member 10861935 Ответов: 1

андроид определение местоположения не вызывая переходы


Всем Привет,

Я пытаюсь создать простую геозону и пытаюсь 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

Вы тестировали его в реальном устройстве? Если да, то попробуйте еще раз после перезагрузки устройства.

1 Ответов