2013年10月1日火曜日

サンプルコードFAC


// 画面の向きを取得する  縦方向?
protected boolean isPortrait() {
return (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT);
}

// http://webcache.googleusercontent.com/search?q=cache:I_XCJK5THfMJ:kurotofu.sytes.net/kanji/fool/%3Fp%3D694+&cd=1&hl=ja&ct=clnk
public void surfaceChanged0(SurfaceHolder holder, int format, int width,
int height, int wc, int hc) {
camera.stopPreview();

Parameters mParam = camera.getParameters();

// Set orientation
boolean portrait = isPortrait();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) {
// 2.1 and before
if (portrait) {
mParam.set("orientation", "portrait");
} else {
mParam.set("orientation", "landscape");
}
} else {
// 2.2 and later
if (portrait) {
camera.setDisplayOrientation(90);
} else {
camera.setDisplayOrientation(0);
}
}

// Set width & height
int previewWidth = width;
int previewHeight = height;
if (portrait) {
previewWidth = height;
previewHeight = width;
}

List<Size> sizes = mParam.getSupportedPreviewSizes();
try{
List<Size> seinou = mParam.getSupportedPictureSizes();
Size getSize = seinou.get(0);

UserSession objUser = UserSession.getInstance();
//seinou = objUser.getSeinou();
if (objUser.getSeinou().equals("Inferior")) {
getSize=seinou.get((int) (seinou.size()*0.6));
} else if (objUser.getSeinou().equals("Medium")||fCFL) {
getSize=seinou.get((int) (seinou.size()*0.3));
}

mParam.setPictureSize(getSize.width, getSize.height);
}catch(Exception e){
e.printStackTrace();
}
int tmpHeight = 0;
int tmpWidth = 0;
for (Size size : sizes) {
if ((size.width > previewWidth) || (size.height > previewHeight)) {
continue;
}
if (tmpHeight < size.height) {// 収まるサイズを選ぶ
tmpWidth = size.width;
tmpHeight = size.height;
}
}
previewWidth = tmpWidth;
previewHeight = tmpHeight;

if (wc == 0) {
mParam.setPreviewSize(previewWidth, previewHeight);
}else{
mParam.setPreviewSize(wc, hc);
}

ViewGroup.LayoutParams layoutParams = this.getLayoutParams();

float scale = 1f;

if (wc == 0) {

if (portrait) {// 縦なら 幅が狭くなる

// scale=(float)height/(float)previewHeight;
scale = (float) width / (float) previewHeight;

layoutParams.height = (int) (previewWidth * scale);
layoutParams.width = (int) (previewHeight * scale);
} else { // 横なら高さが狭くなる

scale = (float) height / (float) previewHeight;
// scale=(float)width/(float)previewWidth;

layoutParams.height = (int) (previewHeight * scale);
layoutParams.width = (int) (previewWidth * scale);
}
} else {
if (portrait) {// 縦なら 幅が狭くなる

// scale=(float)height/(float)previewHeight;
if (hc > width) {
scale = (float) hc / (float) width;
} else {
scale = (float) width / (float) previewHeight;
}
layoutParams.height = (int) (previewWidth * scale);
layoutParams.width = (int) (previewHeight * scale);
} else { // 横なら高さが狭くなる

if (hc > height) {
scale = (float) hc / (float) height;
} else {
scale = (float) height / (float) previewHeight;
}
// scale=(float)width/(float)previewWidth;

layoutParams.height = (int) (previewHeight * scale);
layoutParams.width = (int) (previewWidth * scale);
}
}
this.setLayoutParams(layoutParams);

camera.setParameters(mParam);
camera.startPreview();
}

// ギャラリーに登録
private void hanei(String pass, String name) {

UserSession objUser = UserSession.getInstance();
objUser.passname = pass;

writePicture(pass);
/*
*
* ContentValues values = new ContentValues(); ContentResolver
* contentResolver = cn.getContentResolver();
* values.put(Images.Media.MIME_TYPE, "image/jpeg"); //
* values.put(Images.Media.LATITUDE, cn.loc.getLatitude()); //
* values.put(Images.Media.LONGITUDE, cn.loc.getLongitude());
* values.put(Images.Media.TITLE, name); // タイトル名(ファイル名にしてます)
* values.put("_data", pass); // 画像の保存されたフルパス
* contentResolver.insert(Media.EXTERNAL_CONTENT_URI, values);
*/
}

private String TAG = "recitative erre";

private void writePicture(String fname)// , byte[] data)
{
// 対象ファイルの削除
removeThumb(fname);

// 画像ファイルの保存
/*
* try{
*
* FileOutputStream outfile = new FileOutputStream(fname);
* outfile.write(data); outfile.close();
*
* }catch(Exception e){ Log.e(TAG,e.getStackTrace()[0].getFileName()
* +"("+e.getStackTrace()[0].getLineNumber()+")"
* +e.getStackTrace()[0].getMethodName() +" "+e.toString()); }
*/
// サムネイルの削除対象に登録
makeThumb(fname);
}

/**
* ContentResolverへ画像ファイル(jpeg)を登録し、サムネイル作成対象にします
*
* @param fname
*            登録する画像ファイルのフルパス
*/
private void makeThumb(String fname) {
long now = System.currentTimeMillis();
try {
ContentValues values = new ContentValues();
ContentResolver cr = getContext().getContentResolver();
values.put(Images.Media.MIME_TYPE, "image/jpeg");
values.put("_data", fname);
values.put(Images.Media.DATE_ADDED, now);
values.put(Images.Media.DATE_TAKEN, now);
values.put(Images.Media.DATE_MODIFIED, now);
cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
} catch (Exception e) {
Log.e(TAG,
e.getStackTrace()[0].getFileName() + "("
+ e.getStackTrace()[0].getLineNumber() + ")"
+ e.getStackTrace()[0].getMethodName() + " "
+ e.toString());
}
}

/**
* ContentResolverから画像ファイルを削除します
*
* @param fname
*            削除する画像ファイルのフルパス
*/
private void removeThumb(String fname) {
ContentResolver cr = getContext().getContentResolver();
try {
String where = MediaStore.Images.Media.DATA + "=?";
String[] selectionArgs = { fname };
cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, where,
selectionArgs);
} catch (Exception e) {
Log.e(TAG,
e.getStackTrace()[0].getFileName() + "("
+ e.getStackTrace()[0].getLineNumber() + ")"
+ e.getStackTrace()[0].getMethodName() + " "
+ e.toString());
}
}

0 件のコメント:

コメントを投稿