2012-11-14 1 views
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(); 
    } 
} 

답변

0

입니다 예를 논리적으로 당신이 OnShake 방법에 레이아웃을 팽창 할 수 있어야 말하거나 심지어 암호보기가 포함 된 작업을 시작할 수 있습니다. onShake 메소드에서 비밀번호보기가 포함 된 새로운 활동을 시작한 다음 사용자의 입력을 기반으로 다음에 수행 할 작업을 결정할 수 있습니다!

편집 :

How to detect shake event with android?

당신이 흔들림을 감지 한 후 방금 새로운 활동 :

것은 나에게하자를 시작해야합니다 있도록 흔들림을 감지하는 방법을 찾을 것이다 &에서보세요

일부 코드 조각이 어떻게 생각 : 당신이

편집이 더 많은 도움을 필요로 알고 작동 할 것입니다 :

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

그러면 문제가 해결됩니다! 또한 Manifest에 두 번째 활동을 등록하십시오. 희망이 도움이!

또한 위의 코드는 모두 Here에서 비롯되어 원래의 포스터 덕분입니다.

+0

@Adnana은 ... 당신은 ... 패스 코드 잠금 레이아웃 – teekib

+0

을 보이게하는 방법에 대한 제안이 ..하지만 의도가 더 시작하는 공공 무효 onShake() { vibe.vibrate (100)입니다 시도 감사; 의도 myIntent = 새로운 의도 (ShakeListenerTestActivity.this, passwordActivity.class); ShakeListenerTestActivity.this.Activity (myIntent); Toast.makeText (ShakeListenerTestActivity.this, password.getText() \t \t \t Toast.LENGTH_SHORT) .show(); } }); – teekib

+0

어떻게 움직임을 감지하고 있습니까? 휴대 전화의 움직임을 감지하려면 가속도계를 사용해야합니다. 내 대답에 링크를보십시오. 나는 그것을 지금 편집했다. –