2 votes

Android : onshake avec écran de mot de passe

Je suis en train d'implémenter un détecteur de vent.

Chaque fois que l'appareil est secoué, je veux fournir un écran de mot de passe.

J'ai besoin d'une suggestion sur la façon de le mettre en œuvre. Ce que je fais, c'est que je gonfle la mise en page du mot de passe dans la méthode onShake. dans la méthode onShake, puis-je le faire ?

La disposition du mot de passe devrait ressembler au code de verrouillage général que nous utilisons dans les appareils (donnant 4 chiffres).

Toute suggestion sera appréciée.

Voici mon activité ShakeListener

public   class ShakeListenerTestActivity extends Activity 
{
  private ShakeListener mShaker;
  private EditText password;

  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);              

    mShaker = new ShakeListener(this);
    mShaker.setOnShakeListener(new ShakeListener.OnShakeListener () {
      public void onShake()
      {

   Toast.makeText(ShakeListenerTestActivity.this, password.getText(),
            Toast.LENGTH_SHORT).show();

      }

    });

  }

  public void onResume()
  {
    mShaker.resume();
    super.onResume();
  }

  @Override
  public void onPause()
  {
    mShaker.pause();
    super.onPause();  
  } 
}

0voto

Adnan Mulla Points 2684

Oui, en toute logique, vous devriez pouvoir gonfler une mise en page dans la méthode OnShake, ou vous pourriez même démarrer une activité contenant la vue du mot de passe. Dans la méthode OnShake, il suffit de lancer une nouvelle activité qui contient la vue du mot de passe et ensuite, en fonction de l'entrée de l'utilisateur, vous pouvez décider de ce qu'il faut faire ensuite !

Edit :

Comment détecter les secousses avec Android ?

Jetez-y un coup d'œil et vous trouverez comment détecter un tremblement. Après avoir détecté un tremblement, il vous suffit de commencer une nouvelle activité :)

Faites-moi savoir si vous avez besoin de plus d'aide

Edit 2 :

Quelques extraits de code pour montrer comment je pense que cela va fonctionner :

public class ShakeActivity extends Activity implements SensorListener

sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);

sensorMgr.registerListener(this,
SensorManager.SENSOR_ACCELEROMETER,
SensorManager.SENSOR_DELAY_UI);

public void onSensorChanged(int sensor, float[] values) {
if (sensor == SensorManager.SENSOR_ACCELEROMETER) {
long curTime = System.currentTimeMillis();
// only allow one update every 100ms.
if ((curTime - lastUpdate) > 100) {
long diffTime = (curTime - lastUpdate);
lastUpdate = curTime;

x = values[SensorManager.DATA_X];
y = values[SensorManager.DATA_Y];
z = values[SensorManager.DATA_Z];

float speed = Math.abs(x+y+z – last_x – last_y – last_z) / diffTime * 10000;

if (speed > SHAKE_THRESHOLD) {
Log.d(”sensor”, “shake detected w/ speed: ” + speed);
Toast.makeText(this, “shake detected w/ speed: ” + speed, Toast.LENGTH_SHORT).show();
Intent i = new Intent(this, newActivity.class);
startActivity(i);
}
last_x = x;
last_y = y;
last_z = z;
  }
 }
}

Cela devrait résoudre votre problème ! Enregistrez également la deuxième activité dans le manifeste. J'espère que cela vous aidera !

De plus, la quasi-totalité du code ci-dessus provient de Ici donc merci à l'auteur original !

0voto

Shoaib Akram Points 29

Voici le code complet de l'affichage du mot de passe en cas de saisie erronée dans Android comme dans iOS.

Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);
 findViewById(R.id.pwd).startAnimation(shake);

et voici son shake.xml du dossier anim

<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:interpolator="@anim/cycle_7"
android:toXDelta="10" />

pour plus d'informations, voir le lien ci-dessous https://github.com/MShoaibAkram/AnimateViewOnWrongPassword

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X