【实例简介】录像例子
【实例截图】
【核心代码】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
package
org.lxh.demo;
import
java.io.File;
import
java.io.IOException;
import
android.app.Activity;
import
android.media.MediaRecorder;
import
android.os.Bundle;
import
android.os.Environment;
import
android.util.Log;
import
android.view.SurfaceHolder;
import
android.view.SurfaceView;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.view.Window;
import
android.view.WindowManager;
import
android.widget.ImageButton;
import
android.widget.TextView;
public
class
MyMediaRecorderDemo
extends
Activity {
private
ImageButton <SPAN id=0_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=0_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=record&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=2&seller_id=1&di=128"
target=_blank mpid=
"0"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>record</SPAN></A></SPAN> =
null
;
private
ImageButton stop =
null
;
private
ImageButton browser =
null
;
private
TextView <SPAN id=1_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=1_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=info&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=4&seller_id=1&di=128"
target=_blank mpid=
"1"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>info</SPAN></A></SPAN> =
null
;
private
MediaRecorder mediaRecorder =
null
;
private
boolean
sdcardExists =
false
;
// SD卡存在的标记
private
File recordVideoSaveFileDir =
null
;
private
File recordVideoSaveFile =
null
;
private
String recordVideoSaveFileName =
null
;
private
String recDir =
"mldnvideo"
;
private
boolean
isRecord =
false
;
private
SurfaceView surface =
null
;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
super
.requestWindowFeature(Window.FEATURE_NO_TITLE);
// 不显示标题
super
.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
super
.getWindow().addFlags(
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// 高亮的风格显示
super
.setContentView(R.layout.main);
this
.<SPAN id=2_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=2_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=record&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=2&seller_id=1&di=128"
target=_blank mpid=
"2"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>record</SPAN></A></SPAN> = (ImageButton)
super
.findViewById(R.id.record);
this
.stop = (ImageButton)
super
.findViewById(R.id.stop);
this
.browser = (ImageButton)
super
.findViewById(R.id.browser);
this
.<SPAN id=3_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=3_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=info&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=4&seller_id=1&di=128"
target=_blank mpid=
"3"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>info</SPAN></A></SPAN> = (TextView)
super
.findViewById(R.id.info);
this
.surface = (SurfaceView)
super
.findViewById(R.id.surface);
this
.surface.getHolder().setType(
SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
this
.surface.getHolder().setFixedSize(
480
,
800
);
if
((
this
.sdcardExists = Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED))) {
this
.<SPAN id=4_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=4_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=record&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=2&seller_id=1&di=128"
target=_blank mpid=
"4"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>record</SPAN></A></SPAN>VideoSaveFileDir = <SPAN id=5_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=5_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=new&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=1&seller_id=1&di=128"
target=_blank mpid=
"5"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>
new
</SPAN></A></SPAN> File(Environment
.getExternalStorageDirectory().toString()
File.separator
MyMediaRecorderDemo.
this
.recDir File.separator);
// 保存<SPAN id=6_nwp style="HEIGHT: auto; WIDTH: auto; FLOAT: none"><A id=6_nwl style="TEXT-DECORATION: none" href="http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=%CE%C4%BC%FE%BC%D0&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=3&seller_id=1&di=128" target=_blank mpid="6"><SPAN style="FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff">文件夹</SPAN></A></SPAN>
if
(!
this
.recordVideoSaveFileDir.exists()) {
this
.recordVideoSaveFileDir.mkdirs();
// 创建文件夹
}
}
this
.record.setOnClickListener(
new
RecordOnClickListenerImpl()) ;
this
.stop.setOnClickListener(
new
StopOnClickListenerImpl()) ;
this
.browser.setOnClickListener(<SPAN id=7_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=7_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=new&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=1&seller_id=1&di=128"
target=_blank mpid=
"7"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>
new
</SPAN></A></SPAN> BrowserOnClickListenerImpl()) ;
this
.stop.setEnabled(
false
) ;
// 停止录象的按钮暂时不可用
}
private
class
RecordOnClickListenerImpl
implements
OnClickListener {
@Override
public
void
onClick(View v) {
if
(MyMediaRecorderDemo.
this
.sdcardExists) {
// sd卡存在
MyMediaRecorderDemo.
this
.<SPAN id=8_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=8_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=record&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=2&seller_id=1&di=128"
target=_blank mpid=
"8"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>record</SPAN></A></SPAN>VideoSaveFileName = MyMediaRecorderDemo.
this
.recordVideoSaveFileDir
.toString()
File.separator
"MLDNVideo_"
System.currentTimeMillis()
".3gp"
;
// 文件的路径名称
MyMediaRecorderDemo.
this
.recordVideoSaveFile = <SPAN id=9_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=9_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=new&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=1&seller_id=1&di=128"
target=_blank mpid=
"9"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>
new
</SPAN></A></SPAN> File(
MyMediaRecorderDemo.
this
.recordVideoSaveFileName);
// 文件路径
MyMediaRecorderDemo.
this
.mediaRecorder =
new
MediaRecorder() ;
MyMediaRecorderDemo.
this
.mediaRecorder.reset();
// 重置
MyMediaRecorderDemo.
this
.mediaRecorder
.setAudioSource(MediaRecorder.AudioSource.MIC);
MyMediaRecorderDemo.
this
.mediaRecorder
.setVideoSource(MediaRecorder.VideoSource.CAMERA);
MyMediaRecorderDemo.
this
.mediaRecorder
.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
MyMediaRecorderDemo.
this
.mediaRecorder
.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
MyMediaRecorderDemo.
this
.mediaRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
MyMediaRecorderDemo.
this
.mediaRecorder
.setOutputFile(MyMediaRecorderDemo.
this
.<SPAN id=10_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=10_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=record&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=2&seller_id=1&di=128"
target=_blank mpid=
"10"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>record</SPAN></A></SPAN>VideoSaveFileName);
MyMediaRecorderDemo.
this
.mediaRecorder.setVideoSize(
320
,
240
) ;
MyMediaRecorderDemo.
this
.mediaRecorder.setVideoFrameRate(
10
) ;
MyMediaRecorderDemo.
this
.mediaRecorder
.setPreviewDisplay(MyMediaRecorderDemo.
this
.surface
.getHolder().getSurface());
try
{
MyMediaRecorderDemo.
this
.mediaRecorder.prepare() ;
}
catch
(Exception e) {
Log.i(
"MyMediaRecorderDemo"
, e.toString()) ;
}
MyMediaRecorderDemo.
this
.mediaRecorder.start() ;
MyMediaRecorderDemo.
this
.<SPAN id=11_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=11_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=info&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=4&seller_id=1&di=128"
target=_blank mpid=
"11"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>info</SPAN></A></SPAN>.setText(
"正在录象中..."
) ;
MyMediaRecorderDemo.
this
.stop.setEnabled(
true
) ;
MyMediaRecorderDemo.
this
.record.setEnabled(
false
) ;
MyMediaRecorderDemo.
this
.isRecord =
true
;
}
}
}
private
class
StopOnClickListenerImpl
implements
OnClickListener {
@Override
public
void
onClick(View v) {
if
(MyMediaRecorderDemo.
this
.isRecord) {
MyMediaRecorderDemo.
this
.mediaRecorder.stop() ;
MyMediaRecorderDemo.
this
.mediaRecorder.release() ;
MyMediaRecorderDemo.
this
.stop.setEnabled(
false
) ;
MyMediaRecorderDemo.
this
.record.setEnabled(
true
) ;
MyMediaRecorderDemo.
this
.<SPAN id=12_nwp style=
"HEIGHT: auto; WIDTH: auto; FLOAT: none"
><A id=12_nwl style=
"TEXT-DECORATION: none"
href=
"http://cpro.baidu.com/cpro/ui/uijs.php?rs=1&u=http%3A%2F%2Fwww%2Ehaolizi%2Enet%2Fexample%2Fview%5F2374%2Ehtml&p=baidu&c=news&n=10&t=tpclicked3_hc&q=00056130_cpr&k=info&k0=new&kdi0=1&k1=record&kdi1=8&k2=%CE%C4%BC%FE%BC%D0&kdi2=1&k3=info&kdi3=1&sid=88718b14bf8e789c&ch=0&tu=u1832491&jk=3b1f162b2d36949e&cf=29&fv=15&stid=9&urlid=0&luki=4&seller_id=1&di=128"
target=_blank mpid=
"12"
><SPAN style=
"FONT-SIZE: 14px; HEIGHT: auto; WIDTH: auto; FLOAT: none; COLOR: #0000ff"
>info</SPAN></A></SPAN>.setText(
"录象结束,文件路径为:"
MyMediaRecorderDemo.
this
.recordVideoSaveFile);
}
}
}
private
class
BrowserOnClickListenerImpl
implements
OnClickListener {
@Override
public
void
onClick(View v) {
}
}
}
|