Transcript pptx

AIを利用した応用例とタッチイ
ベント
7/6
前回の内容

インテント

顔検出

音声認識
本日の内容

タッチイベント

AIを利用した応用例
◦ 音声認識を使ったアプリ
◦ 顔検出を使ったアプリ
※今日の内容はエミュレーターでは動かせません
タッチイベント

タッチイベントとは、Android端末の
画面をタッチした時に発生するイベン
トです
TouchTestActivity.javaを実行してみましょう
ソースコード
private class ViewTest extends View {
int x = 0, y = 0;
Paint paint = new Paint();
public ViewTest(Context context) {
super(context);
}
public boolean onTouchEvent(MotionEvent e) {
if (e.getAction() == MotionEvent.ACTION_DOWN) {
②
x = (int) e.getX();
y = (int) e.getY();
return true;
}
if (e.getAction() == MotionEvent.ACTION_MOVE) {
①
②
}
if (e.getAction() == MotionEvent.ACTION_UP) {
}
return false;
}
public void onDraw(Canvas c) {
c.drawColor(Color.BLUE);
c.drawCircle(x, y, 10, paint);
}}
②
onTouchEventメソッド

タッチイベントが発生するとonTouchEvent
メソッドが呼び出されます

onTouvhEventメソッドではタッチした場所
の座標を取得したりできますが、最後に
trueを返さないと反映されません
タッチイベントの種類

タッチイベントにはいくつか種類があ
りMotionEventで管理されています
◦ MotionEvent.ACTION_DOWN
タッチした瞬間
◦ MotionEvent.ACTION_MOVE
タッチしている間
◦ MotionEvent.ACTION_UP 離した瞬間
応用例
↓のように書くとタッチしている間、常に座標を取得
し続けます
if (e.getAction() == MotionEvent.ACTION_MOVE) {
x = (int) e.getX();
y = (int) e.getY();
return true;
}
タッチイベントを使うと図形や画像が指の動きに追
尾するアプリや、もぐらたたきのようなゲームも作
れます
AIとは
Artificial Intelligenceの略

自然言語を理解する
◦ 音声認識・機械翻訳

論理的な推論を行う
◦ エキスパートシステム・探索

経験から学習する
◦ 機械学習・テンプレートマッチング
音声認識を使ったアプリ

前回の資料で紹介した音声認識を使っ
て面白いアプリを作ってみましょう
会話アプリ

Android端末に喋った言葉に合わせて
メッセージを変えると擬似的に会話が
できます
音声認識のコード
// アクティビティ終了時に呼び出される
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 自分が投げたインテントであれば応答する
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
String resultsString = "";
// 結果文字列リスト
ArrayList<String> results = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
resultsString = results.get(0);
// トーストを使って結果を表示
Toast.makeText(this, resultsString,Toast.LENGTH_LONG).show();
}}
受け答えの例
// 結果文字列リスト
ArrayList<String> results = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
resultsString = results.get(0);
if (resultsString.equals("こんにちは")) {
Toast.makeText(this, "こんにちは!",
Toast.LENGTH_LONG).show();
}
if (resultsString.equals("こんばんは")) {
Toast.makeText(this, "こんばんは!",
Toast.LENGTH_LONG).show();
}
外部アプリの起動

前回のインテントを使うと、音声認識で検出し
た言葉から他のアプリを起動できます
if (resultsString.equals(“アプリ")) {
Intent intent2 = new Intent(LauncherActivity.this,
IntentReceiver.class);
final String str = "Intent送受信のテスト";
intent2.putExtra("IntentSender", str);
// intentを送信
startActivity(intent2);
}
応用例

受け答えの文章をデータベースから取
得する

リストビューに受け答えの文字列を追
加してチャットのようにする
顔検出を使ったアプリ

カメラで撮った写真に人が写っている
かどうかを判別し、その結果によって
処理を変えるアプリを作ってみましょ
う
SmarthomeActivity.javaを実行してみましょう
ソースコード
Toast.makeText(getApplicationContext(), "写真撮れたお( ^ω^)",Toast.LENGTH_LONG).show();
ll.removeView(bt);
ll.removeView(sv);
// 顔認識処理
FaceDetector faceDetector = new FaceDetector(
image.getWidth(), image.getHeight(), max);
Face[] faces = new Face[max];
int num = faceDetector.findFaces(image, faces);
①
ll.addView(imageView);
if (num != 0) {
Toast.makeText(getApplicationContext(), "誰かいます",Toast.LENGTH_LONG).show();
imageView.setImageBitmap(on);
} else {
Toast.makeText(getApplicationContext(),"誰もいないので明かりを消します",
Toast.LENGTH_LONG).show();
imageView.setImageBitmap(off);
}
} catch (Exception e) {
}
顔検出結果による場合分け
変数numに検出された顔の数が保存され
ているので、その値によって処理を変
えます
if (num != 0) {
// 顔が検出された時の処理
} else {
// 顔が検出されなかった時の処理
}
今後の予定

7/13
プレゼンや提出資料の説明
各自アプリの実装

7/20
各自作ったアプリについてプレゼン