2

私はsensoreventlistenerを実装しています。

デバイスが振られるたびに、パスワード画面を提供したいと思います。

それを実装する方法についていくつかの提案が必要です。私がしていることは、onShakeメソッドでパスワードレイアウトを膨らませていることです。それはできますか?

パスワードのレイアウトは、デバイスで使用した一般的なパスコードロックのようになります。(4桁の数字を指定)

任意の提案をいただければ幸いです。

以下は私の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();  
  } 
}
4

2 に答える 2

0

はい、論理的に言えば、OnShakeメソッドでレイアウトを膨らませることができるはずです。あるいは、パスワードビューを含むアクティビティを開始することもできます。onShakeメソッドでは、パスワードビューを含む新しいアクティビティを開始するだけで、ユーザーからの入力に基づいて、次に何をするかを決定できます。

編集:

アンドロイドでシェイクイベントを検出する方法は?

それを見てください。揺れを検出する方法がわかるので、揺れを検出した後は、新しいアクティビティを開始する必要があります:)

さらにサポートが必要な場合はお知らせください

編集2:

いくつかのコードスニペットは、私がどのように機能すると思うか:

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;
  }
 }
}

それはあなたの問題を解決するはずです!また、マニフェストに2番目のアクティビティを登録します。お役に立てれば!

また、上記のコードのほぼ全体がここからのものだったので、元のポスターに感謝します!

于 2012-11-14T06:39:05.487 に答える
0

これは、iOS のように Android で間違ったエントリが表示されたときにパスワード ビューを振る完全なコードです。

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

ここにanimフォルダーのshake.xmlがあります

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

詳細については、以下のリンクを参照して ください https://github.com/MShoaibAkram/AnimateViewOnWrongPassword

于 2018-11-06T10:49:07.170 に答える