Vedo che Xamarin ha documenti per Creating a Gesture Listener ma niente su "scuotere" il dispositivo solo "lanciare" sullo schermo. Mi chiedo se Xamarin per Android sia in grado di ascoltare i gesti dello shake? Qualcuno sa o qualcuno ha provato? Grazie in anticipo.Xamarin può gestire l'accelerometro di scuotimento su Android?
risposta
Ecco un esempio completo che utilizza Android.Hardware.ISensorEventListener
per rilevare un gesto di scuotimento. Dovresti essere in grado di rilasciare questo nei tuoi progetti senza problemi.
[Activity (Label = "ShakeDetection", MainLauncher = true)]
public class MainActivity : Activity, Android.Hardware.ISensorEventListener
{
bool hasUpdated = false;
DateTime lastUpdate;
float last_x = 0.0f;
float last_y = 0.0f;
float last_z = 0.0f;
const int ShakeDetectionTimeLapse = 250;
const double ShakeThreshold = 800;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
// Register this as a listener with the underlying service.
var sensorManager = GetSystemService (SensorService) as Android.Hardware.SensorManager;
var sensor = sensorManager.GetDefaultSensor (Android.Hardware.SensorType.Accelerometer);
sensorManager.RegisterListener(this, sensor, Android.Hardware.SensorDelay.Game);
}
#region Android.Hardware.ISensorEventListener implementation
public void OnAccuracyChanged (Android.Hardware.Sensor sensor, Android.Hardware.SensorStatus accuracy)
{
}
public void OnSensorChanged (Android.Hardware.SensorEvent e)
{
if (e.Sensor.Type == Android.Hardware.SensorType.Accelerometer)
{
float x = e.Values[0];
float y = e.Values[1];
float z = e.Values[2];
DateTime curTime = System.DateTime.Now;
if (hasUpdated == false)
{
hasUpdated = true;
lastUpdate = curTime;
last_x = x;
last_y = y;
last_z = z;
}
else
{
if ((curTime - lastUpdate).TotalMilliseconds > ShakeDetectionTimeLapse) {
float diffTime = (float)(curTime - lastUpdate).TotalMilliseconds;
lastUpdate = curTime;
float total = x + y + z - last_x - last_y - last_z;
float speed = Math.Abs(total)/diffTime * 10000;
if (speed > ShakeThreshold) {
Toast.MakeText(this, "shake detected w/ speed: " + speed, ToastLength.Short).Show();
}
last_x = x;
last_y = y;
last_z = z;
}
}
}
}
#endregion
}
L'attività sopra implementa l'interfaccia Android.Hardware.ISensorEventListener
e quindi registra attraverso il SensorManager
. Gli eventi effettivi del sensore (scuotimento, ecc.) Sono convogliati su OnSensorChanged
; è qui che teniamo la logica per il nostro codice di rilevamento delle vibrazioni.
Ho basato questa risposta su this one ma ho apportato alcune modifiche ad esso. In primo luogo, questa risposta utilizza ISensorEventListener anziché ISensorListener (che era obsoleto nel livello API 3). E troverai il rilevamento dei gesti iniziali incluso (tramite hasUpdated
) e alcune variabili per controllare la sensibilità dell'oscillazione. Giocando con ShakeDetectionTimeLapse
e ShakeDetectionThreshold
dovresti essere in grado di adattarlo alle tue esigenze.
See:
- 1. android - rilevamento scuotimento
- 2. Android: Rilevatore scuotimento troppo sensibile
- 3. ImageView circolare su Xamarin
- 4. C# su Android: Xamarin o Unity?
- 5. Tessuto TwitterKit su Xamarin
- 6. Avviso System.ObjectModel Xamarin non funziona su Android
- 7. Xamarin - Android - Visual Studio - L'applicazione non può essere avviata
- 8. IronPython su Xamarin
- 9. OnBackPressed in Xamarin Android
- 10. studio visivo non può eseguire il debug Xamarin Android
- 11. Xamarin Android EditText tasto Invio
- 12. Xamarin Android - no flowlayout?
- 13. Bootstrap Android Xamarin
- 14. Aggiornamento applicazione Xamarin per Android
- 15. Android utilizzando Xamarin
- 16. Converti automaticamente il codice tra Xamarin iOS e Xamarin Android
- 17. Come abilitare più notifiche caratteristiche BLE su Xamarin/Android?
- 18. L'installazione di Xamarin Android non riesce
- 19. Come gestire Facebook ShareDialog.canShow() == false su Android
- 20. Installa Xamarin Mono per Android
- 21. Genymotion Emulatore Android per Xamarin
- 22. modellazione 3D su un progetto Android nel Xamarin Studio
- 23. Xamarin Android Player/Visual Studio: bloccato su "Starting Emulator"
- 24. Esegui l'applicazione Android su più dispositivi contemporaneamente (Xamarin)
- 25. Installazione di Xamarin Mono per Android
- 26. Xamarin android salva il file di testo
- 27. L'app Xamarin verrà eseguita su Windows Phone?
- 28. Come posso aggiungere il gesto di scuotimento in Cocos2d CCLayer?
- 29. funzione C# Xamarin Su clic
- 30. Framework di registrazione su Xamarin iOS
farò dare una prova e farvi sapere. grazie mille :) –