XML FILE : AndroidManifest.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
package
=
"com.androidexample.camera"
android:versionCode
=
"1"
android:versionName
=
"1.0"
>
<
uses-sdk
android:minSdkVersion
=
"10"
android:targetSdkVersion
=
"17"
/>
<
application
android:icon
=
"@drawable/icon"
android:label
=
"@string/app_name"
>
<
activity
android:name
=
"com.androidexample.camera.VideocameraActivity"
android:screenOrientation
=
"portrait"
android:label
=
"@string/app_name"
>
<
intent-filter
>
<
action
android:name
=
"android.intent.action.MAIN"
/>
<
category
android:name
=
"android.intent.category.LAUNCHER"
/>
</
intent-filter
>
</
activity
>
</
application
>
<
uses-permission
android:name
=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<!-- For android.media.audiofx.Visualizer -->
<
uses-permission
android:name
=
"android.permission.RECORD_AUDIO"
/>
<!-- We will request access to the camera, saying we require a camera
of some sort but not one with autofocus capability. -->
<
uses-permission
android:name
=
"android.permission.CAMERA"
/>
<
uses-feature
android:name
=
"android.hardware.camera"
/>
</
manifest
>
JAVA FILE : VideocameraActivity.php
1. Opening android phone inbuild camera by camera intent.2. Capture photo and again return on VideocameraActivity.java onActivityResult method.
3. Inside onActivityResult method getting captured video saved path and showing path on activity.
package
com.valkeshexample.camera;
import
java.io.File;
import
java.text.SimpleDateFormat;
import
android.app.Activity;
import
android.content.Intent;
import
android.net.Uri;
import
android.os.Bundle;
import
android.os.Environment;
import
android.provider.MediaStore;
import
android.util.Log;
import
android.view.View;
import
android.widget.Button;
import
android.widget.TextView;
import
android.widget.Toast;
public
class
VideocameraActivity
extends
Activity {
private
Uri fileUri;
public
static
final
int
MEDIA_TYPE_VIDEO =
2
;
private
static
final
int
CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE =
200
;
public
static
VideocameraActivity ActivityContext =
null
;
public
static
TextView
val_output
;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActivityContext =
this
;
Button buttonRecording = (Button)findViewById(R.id.recording);
val_output
= (TextView)findViewById(R.id.
val_output
);
buttonRecording.setOnClickListener(
new
Button.OnClickListener(){
@Override
public
void
onClick(View arg0) {
// create new Intentwith with Standard Intent action that can be
// sent to have the camera application capture an video and return it.
Intent intent =
new
Intent(MediaStore.ACTION_VIDEO_CAPTURE);
// create a file to save the video
fileUri = getOutputMediaFileUri(MEDIA_TYPE_VIDEO);
// set the image file name
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
// set the video image quality to high
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,
1
);
// start the Video Capture Intent
startActivityForResult(intent, CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE);
}});
}
/** Create a file Uri for saving an image or video */
private
static
Uri getOutputMediaFileUri(
int
type){
return
Uri.fromFile(getOutputMediaFile(type));
}
/** Create a File for saving an image or video */
private
static
File getOutputMediaFile(
int
type){
// Check that the SDCard is mounted
File mediaStorageDir =
new
File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES),
"MyCameraVideo"
);
// Create the storage directory(MyCameraVideo) if it does not exist
if
(! mediaStorageDir.exists()){
if
(! mediaStorageDir.mkdirs()){
val_output
.setText(
"Failed to create directory MyCameraVideo."
);
Toast.makeText(ActivityContext,
"Failed to create directory MyCameraVideo."
,
Toast.LENGTH_LONG).show();
Log.d(
"MyCameraVideo"
,
"Failed to create directory MyCameraVideo."
);
return
null
;
}
}
// Create a media file name
// For unique file name appending current timeStamp with file name
java.util.Date date=
new
java.util.Date();
String timeStamp =
new
SimpleDateFormat(
"yyyyMMdd_HHmmss"
)
.format(date.getTime());
File mediaFile;
if
(type == MEDIA_TYPE_VIDEO) {
// For unique video file name appending current timeStamp with file name
mediaFile =
new
File(mediaStorageDir.getPath() + File.separator +
"VID_"
+ timeStamp +
".mp4"
);
}
else
{
return
null
;
}
return
mediaFile;
}
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
// After camera screen this code will excuted
if
(requestCode == CAPTURE_VIDEO_ACTIVITY_REQUEST_CODE) {
if
(resultCode == RESULT_OK) {
val_output
.setText(
"Video File : "
+data.getData());
// Video captured and saved to fileUri specified in the Intent
Toast.makeText(
this
, "Video saved to:
" +
data.getData(), Toast.LENGTH_LONG).show();
}
else
if
(resultCode == RESULT_CANCELED) {
val_output
.setText(
"User cancelled the video capture."
);
// User cancelled the video capture
Toast.makeText(
this
,
"User cancelled the video capture."
,
Toast.LENGTH_LONG).show();
}
else
{
val_output
.setText(
"Video capture failed."
);
// Video capture failed, advise user
Toast.makeText(
this
,
"Video capture failed."
,
Toast.LENGTH_LONG).show();
}
}
}
}
XML FILE : main.xml
XML FILE : main.xml
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
android:orientation
=
"vertical"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
>
<
Button
android:id
=
"@+id/recording"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"Capture Video"
/>
<
TextView
android:id
=
"@+id/val_output"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:text
=
"@string/hello"
/>
</
LinearLayout
>
No comments:
Post a Comment