◆ 近距離センサーを使って挨拶する

「タピア」に内蔵されている近距離センサーを使います。タピアに近寄ると近距離センサーが反応して「こんにちは」と言います
このセンサーは、AndroidのAPIを使用します。

◆◇◆◇◆サンプルコード:TAPIAの近距離サンサーが反応して「こんにちは」と言います◆◇◆◇◆

1) ボタンを追加する

サンプルコード「0.ボタンを追加する」を参考に作成します

2) Activityに以下処理を追加する

//近接センサーが反応すると「こんにちは」という
public class _Sensor1Activity extends TapiaActivity implements SensorEventListener {
    TapiaAnimation tapiaAnimation;
    private SensorManager senManager;
    private Sensor senProximity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.eyes_layout);

        ImageView tapiaEyes = (ImageView) findViewById(R.id.eyes);
        //アニメーションの設定をする
        tapiaAnimation = new TapiaAnimation(this,tapiaEyes);

        //SensorManagerのインスタンスを取得する
        senManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

        //日本語の設定する
        TapiaApp.setCurrentLanguage(Language.LanguageID.JAPANESE);
        ttsProvider = TapiaApp.currentLanguage.getTTSProvider();

        //画面長押しでメニューに戻る
        tapiaEyes.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                finish();
                return false;
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();

        // 近距離センサーのオブジェクトを取得する (TYPE_PROXIMITY:近接センサー)
        senProximity = senManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

        // センサマネージャへリスナーを登録する(implements SensorEventListenerにより、thisで登録する)
        senManager.registerListener(this,senProximity,SensorManager.SENSOR_DELAY_NORMAL);
        }

    //センサーのイベントが発生した時にタピアが挨拶する
    @Override
    public void onSensorChanged(SensorEvent event) {

        if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {

            if (event.values[0] > 0 ) {

                    //こんにちは、という
                    try {
                        ttsProvider.say("こんにちは");
                    } catch (LanguageNotSupportedException e) {
                        e.printStackTrace();
                    }

                tapiaAnimation.startAnimation(TapiaAnimation.SMILING, false);

                //挨拶をした後は、元のアニメーションに戻す
                tapiaAnimation.setOnAnimationEndListener(new TapiaAnimation.OnAnimationEndListener() {
                    @Override
                    public void animationEnded() {

                        //雪のアニメーションをセットする。引数はtrueにして連続する
                        tapiaAnimation.startAnimation(TapiaAnimation.BLIZZARD,true); // 雪
                    }
                });
                }
             }
    }
    @Override
    protected void onPause() {
        super.onPause();
        // 近接センサーを無効
        senManager.unregisterListener(this);
        tapiaAnimation.stopAnimation();
    }
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }
}