package com.example.android.recipe086; import java.io.IOException; import java.util.List; import android.app.Activity; import android.app.SearchManager; import android.content.ContentValues; import android.content.Intent; import android.graphics.Bitmap; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.speech.RecognizerIntent; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import android.widget.VideoView; public class Recipe086 extends Activity { private Uri mPictureUri; private static final int REQUEST_CODE_1 = 1; private static final int REQUEST_CODE_2 = 2; private static final int REQUEST_CODE_3 = 3; private static final int REQUEST_CODE_4 = 4; private static final int REQUEST_CODE_5 = 5; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } // Recipe086 public void onBrowserButton(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.google.com")); startActivity(intent); } // Recipe086 public void onSearchButton(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); // 検索したい文字をセット intent.putExtra(SearchManager.QUERY, "マクドナルド"); startActivity(intent); } // Recipe087 public void onDialerButton(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse("tel:0123456789")); startActivity(intent); } // Recipe087 public void onCallButton(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:0123456789")); startActivity(intent); // you need android.permission.CALL_PHONE } // Recipe088 public void onSimpleCameraButton(View view) { Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUEST_CODE_1); } // Recipe088 public void onLargeCameraButton(View view) { String filename = "Recipe_" + System.currentTimeMillis() + ".jpg"; ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.TITLE, filename); values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); mPictureUri = getContentResolver().insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); Intent intent = new Intent(); // intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); intent.setAction("android.media.action.IMAGE_CAPTURE"); intent.putExtra(MediaStore.EXTRA_OUTPUT, mPictureUri); startActivityForResult(intent, REQUEST_CODE_2); } // Recipe089 public void onVideoButton(View view) { Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE); startActivityForResult(intent, REQUEST_CODE_3); } // Recipe090 public void onRecorderButton(View view) { Intent intent = new Intent(); intent.setAction(MediaStore.Audio.Media.RECORD_SOUND_ACTION); startActivityForResult(intent, REQUEST_CODE_4); } // Recipe091 public void onRecognizeButton(View view) { Intent intent = new Intent(); intent.setAction(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); // intent.setAction(RecognizerIntent.ACTION_WEB_SEARCH); // 音声認識に使う言語モデルを指定 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); // プロンプトに表示する文字列を指定 intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "好きな飲み物は?"); startActivityForResult(intent, REQUEST_CODE_5); } public void onAppButton(View view) { Intent intent = new Intent(); intent.setClassName("com.example.android.recipe079", "com.example.android.recip079.Recipe079"); try { startActivity(intent); } catch (android.content.ActivityNotFoundException e) { // Activityが見つからなかった場合の対処例 // 必要なアプリをインストールしてもらうなど Toast.makeText(getApplicationContext(), "QRコードスキャナーをインストールしてください", Toast.LENGTH_LONG).show(); // マーケットを表示して、インストールを促す Uri uri = Uri.parse("market://details?id=com.google.zxing.client.android"); Intent intent2 = new Intent(); intent2.setAction(Intent.ACTION_VIEW); intent2.setData(uri); startActivity(intent2); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) { // 正しい結果が得られなかった場合の処理 return; } if (requestCode == REQUEST_CODE_1) { // このbitmapが撮影した画像データです。 Bitmap bitmap = (Bitmap) data.getExtras().get("data"); ImageView imageView = (ImageView) findViewById(R.id.image); imageView.setImageBitmap(bitmap); } else if (requestCode == REQUEST_CODE_2) { // dataがnullなので、以下のように取得しないで // Uri uri = data.getData(); // インテントにセットしたUri mPictureUriを使う // エラーが発生していなければ、 // このmPictureUriに撮影した写真データのUriが入っている。 ImageView imageView = (ImageView) findViewById(R.id.image); imageView.setImageURI(mPictureUri); } else if (requestCode == REQUEST_CODE_3) { // 撮影された動画のUriを取得 Uri uri = data.getData(); // VideoViewを取得 VideoView v = (VideoView)findViewById(R.id.VideoView01); // VideoViewにはUriがセットできます。 v.setVideoURI(uri); // 再生します。 v.start(); } else if (requestCode == REQUEST_CODE_4) { // 録音された音声のUriを取得 Uri uri = data.getData(); // メディアプレーヤーで再生する例 MediaPlayer mp = new MediaPlayer(); try { // Uriをセット mp.setDataSource(getApplicationContext(), uri); // 準備 mp.prepare(); // 再生! mp.start(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } else if (requestCode == REQUEST_CODE_5) { String resultStr = ""; // 認識結果のリストを取得 // 似ている言葉など、複数の結果がある場合もある。 List<String> results = data .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); for (String result : results) { resultStr += (result + "\n"); } TextView textView = (TextView)findViewById(R.id.text); textView.setText(resultStr); } } }