「タピア」に内蔵されている近距離センサーを使います。タピアに近寄ると近距離センサーが反応して「こんにちは」と言います
このセンサーは、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) {
}
}