안녕하세요
안드로이드 초보인데요
카메라로 사진을 찍어서 이 사진의 파일이름이 밀리세컨변수로 저장되고
사진을 찍고 난후 다른 버튼을 누르면 imageview가 있는 다른 화면으로 넘어가서 멀티터치로 확대 축소해서 그 사진을 볼수 있게해주는데
각각의 기능은 다 구현됫는데 이 파일이름을 보내서 다음 페이지의 imageview를 방금 찍은 사진으로 갱신해주는게 안되네요 ㅠㅠ
사진 찍어주는 클래스 입니다. 인텐트로 파일 이름을 다음 액티비티로 넘기게 했습니다.
public class CameraActivity extends Activity {
private static final String TAG = "Camerasystem";
Camera camera;
Preview preview;
Button buttonClick;
Button buttonImage;
long filename;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);
preview = new Preview(this);
((FrameLayout) findViewById(R.id.preview)).addView(preview);
buttonClick = (Button) findViewById(R.id.buttonClick);
buttonImage = (Button) findViewById(R.id.imagebutton);
buttonClick.setOnClickListener( new OnClickListener() {
public void onClick(View v) {
preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);
}
});
buttonImage.setOnClickListener( new OnClickListener() {
public void onClick(View v) {
Bundle extras = new Bundle();
extras.putLong("passfilename", filename);
Intent intent = new Intent(CameraActivity.this, ImageviewActivity.class);
intent.putExtras(extras);
startActivity(intent);
}
});
Log.d(TAG, "onCreate'd");
}
ShutterCallback shutterCallback = new ShutterCallback() {
public void onShutter() {
Log.d(TAG, "onShutter'd");
}
};
/** Handles data for raw picture */
PictureCallback rawCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Log.d(TAG, "onPictureTaken - raw");
}
};
/** Handles data for jpeg picture */
PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
FileOutputStream outStream = null;
try {
// write to local sandbox file system
// outStream = CameraDemo.this.openFileOutput(String.format("%d.jpg", System.currentTimeMillis()), 0);
// Or write to sdcard
long filename = System.currentTimeMillis();
outStream = new FileOutputStream(String.format("res/layout/drawable-mdpi/"+ filename +".jpg"));
// outStream = new FileOutputStream(String.format("/sdcard/"+ filename +".jpg"));
outStream.write(data);
outStream.close();
Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
}
Log.d(TAG, "onPictureTaken - jpeg");
}
};
}
위에 res/layout/drawable-mdbi로 저장된 파일을 새로운 액티비티 화면의 imageview에 갱신이 안되네요 ㅠ
이미지뷰 코드입니다
public class ImageviewActivity extends Activity implements OnTouchListener {
private static final String TAG = "Touch";
private static final float MIN_ZOOM = 1.0f;
private static final float MAX_ZOOM = 5.0f;
public Intent mIntent = new Intent();
public long filenamelong;
Matrix matrix = new Matrix(); Matrix savedMatrix = new Matrix();
static final int NONE = 0;
static final int DRAG = 1;
static final int ZOOM = 2; int mode = NONE;
PointF start = new PointF();
PointF mid = new PointF();
float oldDist = 1f;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.imageview);
mIntent = getIntent();
mIntent.getLongExtra("passfilename", filenamelong);
String filenamestring = Long.toString(filenamelong);
ImageView view = (ImageView) findViewById(R.id.imageView1);
view.setImageResource(getResources().getIdentifier(filenamestring, "drawable", "com.mck.multiAppproject"));
view.setScaleType(ImageView.ScaleType.FIT_CENTER);
view.setOnTouchListener(this);
일단 넘어온 변수가 long 이라서 이걸 string으로 변환해주고 setimageresource를 썻는데도 절대 갱신이 안되네요 ㅠㅠ
고수님들 도와주세요~~~




// Or write to sdcard
long filename = System.currentTimeMillis();
일단 이 부분에서 filename을 지역변수로 쓰셨으니...클래스변서 filename 에 값이 저장안되었을 테고...
mIntent = getIntent();
mIntent.getLongExtra("passfilename", filenamelong);
String filenamestring = Long.toString(filenamelong);
여기서는 아래와 같이 고치치셔야 할 것 같네요...
mIntent = getIntent();
filenamelong = mIntent.getLongExtra("passfilename", -1);
if(filenamelong != -1)
String filenamestring = String.valueOf(filenamelong);
else