article

Android カメラアプリ作成メモ(8)

  • 2011年3月 4日

シャッターボタンに対応した時のメモです。

キーイベントについては、下記を参考にさせて頂きました。感謝です!!

ということで、下記のように対応しました。

private boolean keyFlag = true;
private boolean focusKeyFlag = true;
private boolean cameraKeyFlag = true;

--- 省略 ---

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    
    switch (keyCode) {

        case KeyEvent.KEYCODE_FOCUS:
            
            // keyFlag は Down で イベントが飛び続けるのを防ぐため。
            if(keyFlag && focusKeyFlag){
                // オートフォーカスの処理を行う。オートフォーカスが終わった後に、focusKeyFlag を true にする。
                focusKeyFlag = keyFlag = false;
            }
            return true;
            
        case KeyEvent.KEYCODE_CAMERA:
            
            if(cameraKeyFlag){
                // シャッターを切る処理を行う。シャッターを切った後に、cameraKeyFlag を true にする。
                cameraKeyFlag = false;
            }
            return true;
            
        default:
            return super.onKeyDown(keyCode, event);
    }
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    
    switch (keyCode) {
    
        case KeyEvent.KEYCODE_FOCUS:
            
            if(!keyFlag){
                keyFlag = true;
            }
            break;
            
        default:
            break;
    }
    return super.onKeyUp(keyCode, event);
}

以下を制御するためにフラグが 3つもあります。力技です。

  • オートフォーカス中に、再度オートフォーカスが実行されるとアプリが落ちる。
  • シャッターを切っている途中で、再度シャッターを切るとアプリが落ちる。
  • 半押し中、KEYCODE_FOCUS イベントが飛び続ける。

アップデート後、特にバグのご連絡も頂いていないので、これで大丈夫そうです。

トラックバック

http://web.dimension-maker.info/cgi-bin/mt/webdimensionmaker/230

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

 

画像の中に見える文字を入力してください。