-
Notifications
You must be signed in to change notification settings - Fork 157
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #941 from chenqiuwen/master
- Loading branch information
Showing
6 changed files
with
134 additions
and
67 deletions.
There are no files selected for viewing
139 changes: 90 additions & 49 deletions
139
...in/java/edu/hzuapps/androidworks/homeworks/net1314080903105/Net1314080903105Activity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,64 +1,105 @@ | ||
package edu.hzuapps.androidworks.homeworks.net1314080903105; | ||
|
||
import java.io.IOException; | ||
import java.io.ByteArrayOutputStream; | ||
import java.io.File; | ||
import java.io.FileInputStream; | ||
import java.io.FileNotFoundException; | ||
import java.lang.ref.WeakReference; | ||
|
||
import android.hardware.Camera; | ||
import android.content.Intent; | ||
import android.graphics.Bitmap; | ||
import android.graphics.BitmapFactory; | ||
import android.net.Uri; | ||
import android.os.Bundle; | ||
import android.app.Activity; | ||
import android.view.Menu; | ||
import android.view.SurfaceHolder; | ||
import android.view.SurfaceHolder.Callback; | ||
import android.view.SurfaceView; | ||
/*整个预览的流程是建立一个surface, | ||
获取surface得控制器surfaceholder, | ||
设立surface的窗口previewdisplay, | ||
最后开始预览startpreview。 | ||
当然最后还要添加相机相关的权限。*/ | ||
public class Net1314080903105Activity extends Activity { | ||
private SurfaceView mView=null; //是建立一个surface | ||
private SurfaceHolder mHolder=null; | ||
private Camera mCamera=null; | ||
@SuppressWarnings("deprecation") | ||
import android.os.Environment; | ||
import android.provider.MediaStore; | ||
import android.view.View; | ||
import android.widget.Button; | ||
import android.widget.ImageButton; | ||
import android.widget.ImageView; | ||
import android.widget.Toast; | ||
|
||
|
||
public class Net1314080903105Activity extends Activity implements View.OnClickListener { | ||
|
||
ImageButton ib; | ||
Button b; | ||
ImageView iv; | ||
Intent i; | ||
final static int cameraData = 0; | ||
Bitmap bmp; | ||
private static final String IMAGE_FILE_NAME = "faceImage.jpg"; | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
// TODO Auto-generated method stub | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_main_net131408903105); | ||
mView=(SurfaceView)this.findViewById(R.id.surfaceView1); | ||
mHolder=mView.getHolder(); //获取surface得控制器surfaceHolder | ||
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); | ||
// mHolder.setFixedSize(1, 700); // 设置Surface分辨率 | ||
// mHolder.setSizeFromLayout(); | ||
// mHolder.setKeepScreenOn(true);// 屏幕常亮 | ||
mHolder.addCallback(new Callback(){ | ||
|
||
@Override | ||
public void surfaceChanged(SurfaceHolder holder, int format, | ||
int width, int height) { | ||
// TODO Auto-generated method stub | ||
setContentView(R.layout.activity_main); | ||
initialize(); | ||
|
||
} | ||
} | ||
|
||
private void initialize() { | ||
// TODO Auto-generated method stub | ||
iv = (ImageView) findViewById(R.id.ivReturnedPic); | ||
ib = (ImageButton) findViewById(R.id.ibTakePic); | ||
ib.setOnClickListener(this); | ||
} | ||
|
||
@Override | ||
public void surfaceCreated(SurfaceHolder holder) { | ||
// TODO Auto-generated method stub | ||
mCamera=Camera.open(1); //若要升级增加摄像头选择则应该设置try,catch | ||
try { | ||
mCamera.setPreviewDisplay(mHolder); //设立surface的窗口PreviewDisplay | ||
mCamera.setDisplayOrientation(90); //设置摄像头角度,以后若有需要可以用来调试手机横竖显示 | ||
} catch (IOException e) { | ||
// TODO Auto-generated catch block | ||
e.printStackTrace(); | ||
} | ||
mCamera.startPreview(); | ||
@Override | ||
public void onClick(View v) { | ||
// TODO Auto-generated method stub | ||
switch (v.getId()) { | ||
case R.id.ibTakePic: | ||
i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); | ||
// 判断存储卡是否可以用,可用进行存储 | ||
if (Tools.hasSdcard()) { | ||
|
||
i.putExtra( | ||
MediaStore.EXTRA_OUTPUT, | ||
Uri.fromFile(new File(Environment | ||
.getExternalStorageDirectory(), | ||
IMAGE_FILE_NAME))); | ||
} | ||
startActivityForResult(i, cameraData); | ||
break; | ||
} | ||
} | ||
|
||
@Override | ||
protected void onActivityResult(int requestCode, int resultCode, Intent data) { | ||
// TODO Auto-generated method stub | ||
super.onActivityResult(requestCode, resultCode, data); | ||
|
||
if (resultCode == RESULT_OK) { | ||
bmp = getLoacalBitmap("/storage/emulated/0/faceImage.jpg"); | ||
iv.setImageBitmap(bmp); | ||
iv.setVisibility(View.VISIBLE); | ||
|
||
} else { | ||
Toast.makeText(MainActivity.this, "未找到存储卡,无法存储照片!", | ||
Toast.LENGTH_LONG).show(); | ||
} | ||
|
||
@Override | ||
public void surfaceDestroyed(SurfaceHolder holder) { | ||
// TODO Auto-generated method stub | ||
mCamera.startPreview(); | ||
mCamera.release(); | ||
}}); | ||
} | ||
|
||
|
||
} | ||
/** | ||
* 加载本地图片 | ||
* http://bbs.3gstdy.com | ||
* | ||
* @param url | ||
* @return | ||
*/ | ||
public static Bitmap getLoacalBitmap(String url) { | ||
try { | ||
FileInputStream fis = new FileInputStream(url); | ||
return BitmapFactory.decodeStream(fis); | ||
} catch (FileNotFoundException e) { | ||
e.printStackTrace(); | ||
return null; | ||
} | ||
} | ||
|
||
} |
21 changes: 21 additions & 0 deletions
21
.../main/java/edu/hzuapps/androidworks/homeworks/net1314080903105/Net1314080903105Tools.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package edu.hzuapps.androidworks.homeworks.net1314080903105; | ||
import android.os.Environment; | ||
/** | ||
* | ||
* @author XuZhiwei ([email protected]) | ||
* Create at 2012-8-17 上午10:14:40 | ||
*/ | ||
public class Tools { | ||
/** | ||
* 检查是否存在SDCard | ||
* @return | ||
*/ | ||
public static boolean hasSdcard(){ | ||
String state = Environment.getExternalStorageState(); | ||
if(state.equals(Environment.MEDIA_MOUNTED)){ | ||
return true; | ||
}else{ | ||
return false; | ||
} | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
android:layout_width="match_parent" | ||
android:layout_height="match_parent" | ||
android:orientation="vertical" | ||
> | ||
|
||
<ImageView | ||
android:id="@+id/ivReturnedPic" | ||
android:layout_width="400dp" | ||
android:layout_height="400dp" | ||
android:src="@drawable/touxiang" | ||
android:layout_gravity="center" /> | ||
|
||
<ImageButton | ||
android:id="@+id/ibTakePic" | ||
android:layout_width="125dp" | ||
android:layout_height="wrap_content" | ||
android:src="@drawable/ic_launcher" | ||
android:layout_gravity="center" /> | ||
|
||
|
||
</LinearLayout> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.