A Android Manifest xml application usespermission android nameandroid

  • Slides: 26
Download presentation
8.実機で実行 8-1 カメラ・録音関係 1.写真の撮影 A. マニフェストの設定 【Android. Manifest. xml】 ・・・ </application> <uses-permission android: name="android.

8.実機で実行 8-1 カメラ・録音関係 1.写真の撮影 A. マニフェストの設定 【Android. Manifest. xml】 ・・・ </application> <uses-permission android: name="android. permission. CAMERA" /> <uses-permission android: name= "android. permission. WRITE_EXTERNAL_STORAGE" />" </manifest>

B.関連クラス 概 要 android. hardware. Cameraクラス static Camera open() void set. Preview. Display(Surface. Holder

B.関連クラス 概 要 android. hardware. Cameraクラス static Camera open() void set. Preview. Display(Surface. Holder sh) void start. Preview() void stop. Preview() void take. Picture(Camera. Shutter. Callback shutter, Camera. Picture. Callback raw, Picture. Callback jpeg) void release() void set. Parameters(Camera. Parameter pr) カメラをオープンする サーフェースをプレビュー画面に設 定する プレビューを開始する。 プレビューを停止する。 JPEG保存時の処理を指定して撮影を 行う。 カメラを解放する。 パラメータを設定する。

D. プログラム例(その 1) package jp. camera; import import import java. io. *; java. util.

D. プログラム例(その 1) package jp. camera; import import import java. io. *; java. util. *; android. app. *; android. os. *; android. view. View. *; android. widget. *; android. hardware. Camera. *;

D. プログラム例(その 2) public class Camera. Activity extends Activity { Button button; Surface. View

D. プログラム例(その 2) public class Camera. Activity extends Activity { Button button; Surface. View surface. V; Surface. Holder surface. H; Camera camera; /** Called when the activity is first created. */ @Override public void on. Create(Bundle saved. Instance. State) { super. on. Create(saved. Instance. State); Linear. Layout LL=new Linear. Layout(this); LL. set. Orientation(Linear. Layout. VERTICAL); set. Content. View(LL); get. Window(). add. Flags( Window. Manager. Layout. Params. FLAG_FULLSCREEN); button=new Button(this); button. set. Text("撮影");

D. プログラム例(その 3) surface. V=new Surface. View(this); surface. H=surface. V. get. Holder(); surface. H.

D. プログラム例(その 3) surface. V=new Surface. View(this); surface. H=surface. V. get. Holder(); surface. H. add. Callback(new camera. Surface. Holder. Callback()); //surface. H. set. Type(Surface. Holder. SURFACE_TYPE_PUSH_BUFFERS); LL. add. View(button); LL. add. View(surface. V); button. set. On. Click. Listener(new camera. Click. Listener()); } class camera. Surface. Holder. Callback implements Surface. Holder. Callback{ @Override public void surface. Changed(Surface. Holder holder, int format, int width, int height) {

D. プログラム例(その 3) try { Window. Manager window. M = (Window. Manager)get. System. Service(WINDOW_SERVICE);

D. プログラム例(その 3) try { Window. Manager window. M = (Window. Manager)get. System. Service(WINDOW_SERVICE); Display display=window. M. get. Default. Display(); int rot=display. get. Rotation(); int deg=0; switch(rot){ case Surface. ROTATION_0 : deg= 90; break; case Surface. ROTATION_90 : deg= 0; break; case Surface. ROTATION_180 : deg=270; break; case Surface. ROTATION_270 : deg=180; break; } camera. set. Display. Orientation(deg); camera. set. Preview. Display(surface. V. get. Holder()); Camera. Parameters param=camera. get. Parameters(); param. set. Preview. Size(width, height); camera. set. Parameters(param);

D. プログラム例(その 4) camera. start. Preview(); }catch(Exception e){} } @Override public void surface. Created(Surface.

D. プログラム例(その 4) camera. start. Preview(); }catch(Exception e){} } @Override public void surface. Created(Surface. Holder holder) { camera = Camera. open(); Camera. Parameters param=camera. get. Parameters(); List<Size> psize=param. get. Supported. Picture. Sizes(); Size s=psize. get(0); param. set. Picture. Size(s. width, s. height); camera. set. Parameters(param); } @Override public void surface. Destroyed(Surface. Holder holder) { camera. stop. Preview(); camera. release(); } }

D. プログラム例(その 5) class camera. Click. Listener implements On. Click. Listener{ @Override public void

D. プログラム例(その 5) class camera. Click. Listener implements On. Click. Listener{ @Override public void on. Click(View v) { camera. take. Picture(null, new camera. Picture. Callback()); } class camera. Picture. Callback implements Picture. Callback{ @Override public void on. Picture. Taken(byte[] data, Camera camera) { try{ File dir =new File( Environment. get. External. Storage. Directory(), "camera. Sample"); if(!dir. exists())dir. mkdir(); File f=new File(dir, "sample. jpeg"); File. Output. Stream stream=new File. Output. Stream(f); stream. write(data);

D. プログラム例(その 6) Toast. make. Text(get. Application. Context(), "写真を保存しました", Toast. LENGTH_LONG); stream. close(); camera.

D. プログラム例(その 6) Toast. make. Text(get. Application. Context(), "写真を保存しました", Toast. LENGTH_LONG); stream. close(); camera. start. Preview(); }catch(Exception e){} } }

2.音声の録音 A. マニフェストの設定 【Android. Manifest. xml】 ・・・ </application> <uses-permission android: name= "android. permission. WRITE_EXTERNAL_STORAGE"

2.音声の録音 A. マニフェストの設定 【Android. Manifest. xml】 ・・・ </application> <uses-permission android: name= "android. permission. WRITE_EXTERNAL_STORAGE" /> <uses-permission android: name= "android. permission. RECORD_AUDIO" /> </manifest>

C.関連クラス 概 要 android. media. Media. Recorderクラス Media. Recorder() void prepare() void start() void

C.関連クラス 概 要 android. media. Media. Recorderクラス Media. Recorder() void prepare() void start() void stop() void reset() void release() void set. Audio. Source(int source) void set. Output. Format(int format) void set. Audio. Encode(int coder) void set. Output. File(String path) android. os. Environmentクラス メディアレコーダ作成 準備 録音開始 録音停止 初期化 開放 オーディオソースの設定 出力フォーマット設定 オーディオエンコーダ設定 出力ファイル設定 static File get. External. Storage. Directory() 外部記憶のディレクトリ取得

D. プログラム例(その1) package jp. Audio; import java. io. *; import android. app. *; import

D. プログラム例(その1) package jp. Audio; import java. io. *; import android. app. *; import android. os. *; import android. view. View. *; import android. widget. *; import android. media. Media. Player. *; public class Recode. Audio. Activity extends Activity { Button[] button=new Button[3]; Media. Player media. Play; Media. Recorder media. Rec; File dir, file; /** Called when the activity is first created. */ @Override

プログラム例(その2) public void on. Create(Bundle saved. Instance. State) { super. on. Create(saved. Instance. State);

プログラム例(その2) public void on. Create(Bundle saved. Instance. State) { super. on. Create(saved. Instance. State); Linear. Layout LL=new Linear. Layout(this); LL. set. Orientation(Linear. Layout. VERTICAL); set. Content. View(LL); button[0]. set. Text("開始"); button[0]. set. Enabled(true); button[1]. set. Text("停止"); button[1]. set. Enabled(false); button[2]. set. Text("開始"); button[2]. set. Enabled(true); File dir= new File(Environment. get. External. Storage. Directory(), "Audio. Sample"); if(!dir. exists()) dir. mkdir(); file=new File(dir, "Audio. 3 gp"); for(int i=0; i<button. length; i++) LL. add. View(button[i]); button[0]. set. On. Click. Listener(new Start. Click. Listener()); button[1]. set. On. Click. Listener(new Pause. Click. Listener()); button[2]. set. On. Click. Listener(new Play. Click. Listener()); }

プログラム例(その3) public void on. Resume() { super. on. Resume(); media. Play= new Media. Player();

プログラム例(その3) public void on. Resume() { super. on. Resume(); media. Play= new Media. Player(); media. Rec=new Media. Recorder(); media. Play. set. On. Completion. Listener(new Audio. Completion. Listener()); } public void on. Pause(){ super. on. Pause(); media. Play. release(); media. Rec. release(); } class Audio. Completion. Listener implements On. Completion. Listener{ public void on. Completion(Media. Player mp){ button[0]. set. Enabled(true); button[1]. set. Enabled(false); button[2]. set. Enabled(true); } }

プログラム例(その4) class Start. Click. Listener implements On. Click. Listener { public void on. Click(View

プログラム例(その4) class Start. Click. Listener implements On. Click. Listener { public void on. Click(View v){ button[0]. set. Enabled(false); button[1]. set. Enabled(true); button[2]. set. Enabled(false); try{ media. Play. reset(); media. Rec. set. Audio. Source(Media. Recorder. Audio. Source. MIC); media. Rec. set. Output. Format( Media. Recorder. Output. Format. THREE_GPP); media. Rec. set. Audio. Encoder(Media. Recorder. Audio. Encoder. AMR_NB); String path = file. get. Absolute. Path(); media. Rec. set. Output. File(path); media. Rec. prepare(); media. Play. set. Data. Source(path); }catch(Exception e){} media. Rec. start(); } }

プログラム例(その5) class Pause. Click. Listener implements On. Click. Listener { public void on. Click(View

プログラム例(その5) class Pause. Click. Listener implements On. Click. Listener { public void on. Click(View v){ button[0]. set. Enabled(true); button[1]. set. Enabled(false); button[2]. set. Enabled(true); media. Rec. stop(); media. Rec. reset(); } } class Play. Click. Listener implements On. Click. Listener { public void on. Click(View v){ button[0]. set. Enabled(false); button[1]. set. Enabled(false); button[2]. set. Enabled(false); try{ media. Play. prepare(); }catch(Exception e){} media. Play. start(); } } }

3.ビデオの撮影 A. マニフェストの設定 【Android. Manifest. xml】 ・・・ </application> <uses-permission android: name="android. permission. CAMERA" />

3.ビデオの撮影 A. マニフェストの設定 【Android. Manifest. xml】 ・・・ </application> <uses-permission android: name="android. permission. CAMERA" /> <uses-permission android: name="android. permission. RECORD_AUDIO" /> <uses-permission android: name= "android. permission. WRITE_EXTERNAL_STORAGE" /> </manifest>

C.関連クラス 概 要 android. media. Media. Recorderクラス void set. Video. Source(int source) set. Video.

C.関連クラス 概 要 android. media. Media. Recorderクラス void set. Video. Source(int source) set. Video. Encode(int coder) set. Video. Frame. Rate(int rate) set. Video. Size(int width, int height) ビデオソースの設定 ビデオエンコーダ設定 フレームレート設定 ビデオサイズ設定

D. プログラム例(その1) package jp. video; import java. io. *; import java. util. *; import

D. プログラム例(その1) package jp. video; import java. io. *; import java. util. *; import android. app. *; import android. content. pm. *; import android. os. *; import android. view. View. *; import android. widget. *; import android. hardware. Camera. *; import android. media. *; public class Video. Activity extends Activity { Button[] button=new Button[2]; Surface. View surface. V; Surface. Holder surface. H; Media. Recorder media. R; File dir, file; Camera camera;

プログラム例(その2) /** Called when the activity is first created. */ @Override public void on.

プログラム例(その2) /** Called when the activity is first created. */ @Override public void on. Create(Bundle saved. Instance. State) { super. on. Create(saved. Instance. State); Linear. Layout LL=new Linear. Layout(this); LL. set. Orientation(Linear. Layout. VERTICAL); set. Content. View(LL); get. Window(). add. Flags(Window. Manager. Layout. Params. FLAG_FULLSCREEN); set. Requested. Orientation( Activity. Info. SCREEN_ORIENTATION_LANDSCAPE); dir=new File( Environment. get. External. Storage. Directory(), "Video. Sample"); if(!dir. exists())dir. mkdir(); file=new File(dir, "Video. Sample. 3 gp"); surface. V=new Surface. View(this); surface. H=surface. V. get. Holder();

プログラム例(その3) for(int i=0; i<button. length; i++) button[i]=new Button(this); button[0]. set. Text("録画"); button[0]. set. Enabled(true);

プログラム例(その3) for(int i=0; i<button. length; i++) button[i]=new Button(this); button[0]. set. Text("録画"); button[0]. set. Enabled(true); button[1]. set. Text("停止"); button[1]. set. Enabled(false); media. R=new Media. Recorder(); media. R. set. Preview. Display(surface. H. get. Surface()); for(int i=0; i<button. length; i++) LL. add. View(button[i]); button[0]. set. On. Click. Listener(new Click. Listener 0()); button[1]. set. On. Click. Listener(new Click. Listener 1()); } public void on. Destroy(){ super. on. Destroy(); media. R. release(); } class Click. Listener 0 implements On. Click. Listener{ public void on. Click(View v) { button[0]. set. Enabled(false); button[1]. set. Enabled(true);

プログラム例(その4) try{media. R. set. Video. Source(Media. Recorder. Video. Source. CAMERA); media. R. set. Audio.

プログラム例(その4) try{media. R. set. Video. Source(Media. Recorder. Video. Source. CAMERA); media. R. set. Audio. Source(Media. Recorder. Audio. Source. MIC); media. R. set. Output. Format(Media. Recorder. Output. Format. THREE_GPP); media. R. set. Audio. Encoder(Media. Recorder. Audio. Encoder. AMR_NB); String path =file. get. Absolute. Path(); camera =Camera. open(); Camera. Parameters param=camera. get. Parameters(); List<Size> psize=param. get. Supported. Picture. Sizes(); Size s=psize. get(0); camera. release(); media. R. set. Video. Size(s. width, s. height); media. R. set. Video. Encoder(Media. Recorder. Video. Encoder. MPEG_4_SP); media. R. prepare(); media. R. start(); }catch(Exception e){} } }

プログラム例(その5) class Click. Listener 1 implements On. Click. Listener{ public void on. Click(View arg

プログラム例(その5) class Click. Listener 1 implements On. Click. Listener{ public void on. Click(View arg 0) { try{ media. R. stop(); button[0]. set. Enabled(true); button[1]. set. Enabled(false); }catch(Exception e){} }