Я хочу использовать новый API перехода Google Activity, и после обучения здесь Я не могу получить желаемый результат.Если вы хотите использовать API-интерфейс Transition, вам нужно обновить предварительный выпуск натива Xamarin.GooglePlayServices.Location (70.1501.0).
Метод OnReceive в BroadcastReceiver никогда не вызывается !!OnSuccess всегда вызывается.
Это код, который я имею для установки перехода активности, который я хочу обнаружить.
// manifest
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
// service
[Service]
public class Service : IntentService
{
public IBinder Binder { get; private set; }
private PendingIntent pendingIntent;
public override void OnCreate()
{
base.OnCreate();
List<ActivityTransition> transitions = InitActivityTransitions();
ActivityTransitionRequest request = new ActivityTransitionRequest(transitions);
var intent = new Intent(this, typeof(SampleReceiver));
pendingIntent = PendingIntent.GetBroadcast(this, 0, intent, PendingIntentFlags.UpdateCurrent);
var task = ActivityRecognition.GetClient(this).RequestActivityTransitionUpdates(request, pendingIntent);
task.AddOnSuccessListener(new OnSuccessListener());
task.AddOnFailureListener(new OnFailureListener());
}
[BroadcastReceiver(Enabled = true, Exported = false)]
public class SampleReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Toast.MakeText(context, "OnReceive called! hurray", ToastLength.Long).Show();
}
}
private List<ActivityTransition> InitActivityTransitions()
{
List<ActivityTransition> transitions = new List<ActivityTransition>();
transitions.Add(
new ActivityTransition.Builder()
.SetActivityType(DetectedActivity.Still)
.SetActivityTransition(ActivityTransition.ActivityTransitionEnter)
.Build());
transitions.Add(
new ActivityTransition.Builder()
.SetActivityType(DetectedActivity.Still)
.SetActivityTransition(ActivityTransition.ActivityTransitionExit)
.Build());
return transitions;
}
public override void OnDestroy()
{
ActivityRecognition.GetClient(this).RemoveActivityTransitionUpdates(pendingIntent);
base.OnDestroy();
}
protected override void OnHandleIntent(Intent intent)
{
}
public class OnFailureListener : Java.Lang.Object, IOnFailureListener
{
public void OnFailure(Java.Lang.Exception e)
{
}
}
public class OnSuccessListener : Java.Lang.Object, IOnSuccessListener
{
public void OnSuccess(Java.Lang.Object result)
{
}
}
}
Спасибо за любую помощь.