Ich möchte Foto machen und zeigen es in neue Aktivität, , aber ich bekomme Toast "Capture fehlgeschlagen". Protokolle sehen in der richtigen Reihenfolge aus. Sie können diesen Toast bei Methode onActivityResult finden.Capture fehlgeschlagen von Kamera
public class FragmentScaling extends Fragment implements View.OnClickListener{
Button btnCamera, btnGallery;
private static final int PHOTO_INTENT_REQUEST_CODE = 100;
private static final int GALLERY_INTENT_REQUEST_CODE = 1;
public Uri uri;
public FragmentScaling() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_scaling, container, false);
btnCamera = (Button) view.findViewById(R.id.b_camera);
btnGallery = (Button) view.findViewById(R.id.b_gallery);
btnCamera.setOnClickListener(this);
btnGallery.setOnClickListener(this);
uri = generateFileUri();
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()){
//если выбрали камеру - запускаем ее
case R.id.b_camera:
//uri = generateFileUri();
if (uri == null) {
Toast.makeText(getView().getContext(), getResources().getString(R.string.sdnot), Toast.LENGTH_LONG).show();
return;
}
Intent intentCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, uri);
//intentCamera.putExtra("return-data", true);
startActivityForResult(intentCamera, PHOTO_INTENT_REQUEST_CODE);
break;
}
}
//получаем результат из галереи или камеры
@Override
public void onActivityResult(int requestCode, int resultCode, Intent imageReturned) {
switch (requestCode) {
//если результат пришел от камеры
case PHOTO_INTENT_REQUEST_CODE:
if (resultCode == getActivity().RESULT_OK) {
Log.i("HHHHHHHHHHHH", "result ok");
//извлекаем uri фотки из интента
Uri selectedImage = uri;
Log.i("HHHHHHHHHHHH", "getdata works!");
//создаем интент для запуска новой активити
Intent last_intent_photo = new Intent(getView().getContext(), ViewPhoto.class);
//помещаем в интент этот uri
last_intent_photo.putExtra("fotka", selectedImage);
//стартуем новую активити
startActivity(last_intent_photo);
} else if (resultCode == getActivity().RESULT_CANCELED)
Toast.makeText(getView().getContext(), "Capture cancelled", Toast.LENGTH_LONG).show();
else
Toast.makeText(getView().getContext(), "Capture failed", Toast.LENGTH_LONG).show();
break;
default: super.onActivityResult(requestCode, resultCode, imageReturned);
}
}
private Uri generateFileUri() {
// Проверяем доступность SD карты
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
return null;
// Проверяем и создаем директорию
File path = new File (Environment.getExternalStorageDirectory(), "CameraTest");
if (! path.exists()){
if (! path.mkdirs()){
return null;
}
}
// Создаем имя файла
String timeStamp = String.valueOf(System.currentTimeMillis());
File newFile = new File(path.getPath() + File.separator + timeStamp + ".jpg");
return Uri.fromFile(newFile);
}
// Save the activity state when it's going to stop.
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (uri != null) {
outState.putString("uri", uri.toString());
}
}
// Recover the saved state when the activity is recreated.
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (getActivity().getIntent().hasExtra("uri")) {
uri = (Uri)getActivity().getIntent().getParcelableExtra("uri");
}
}
}
Ich hoffe sehr für Ihre Hilfe. Bitte treten Sie mich nicht. Ich bin kaum Studium)))
public class ViewPhoto extends Activity {
private ZoomControls zoom;
CustomImageVIew imageView;
private float scaleWidth = 1;
private float scaleHeight = 1;
private Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_photo_layout);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
imageView = (CustomImageVIew)findViewById(R.id.customImageVIew);
zoom = (ZoomControls) findViewById(R.id.zoomControls);
//получаем интент, достаем из него фотку и ставим в имиджвью
Intent intent = getIntent();
Uri uri = (Uri) intent.getExtras().getParcelable("fotka");
try {
bmp = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), uri);
} catch (IOException e) {
e.printStackTrace();
}
//imageView.setImageURI(uri);
// увеличение
zoom.setOnZoomInClickListener(new View.OnClickListener() {
public void onClick(View v) {
int bmpWidth = bmp.getWidth();
int bmpHeight = bmp.getHeight();
double scale = 1.25;
scaleWidth = (float) (scaleWidth * scale);
scaleHeight = (float) (scaleHeight * scale);
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth,
bmpHeight, matrix, true);
imageView.setImageBitmap(resizeBmp);
}
});
// уменьшение
zoom.setOnZoomOutClickListener(new View.OnClickListener() {
public void onClick(View v) {
int bmpWidth = bmp.getWidth();
int bmpHeight = bmp.getHeight();
double scale = 0.8;
scaleWidth = (float) (scaleWidth * scale);
scaleHeight = (float) (scaleHeight * scale);
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth,
bmpHeight, matrix, true);
imageView.setImageBitmap(resizeBmp);
}
});
}
Class public class ViewPhoto extends Activity {
private ZoomControls zoom;
CustomImageVIew imageView;
private float scaleWidth = 1;
private float scaleHeight = 1;
private Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_photo_layout);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
imageView = (CustomImageVIew)findViewById(R.id.customImageVIew);
zoom = (ZoomControls) findViewById(R.id.zoomControls);
//получаем интент, достаем из него фотку и ставим в имиджвью
Intent intent = getIntent();
Uri uri = (Uri) intent.getExtras().getParcelable("fotka");
try {
bmp = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), uri);
} catch (IOException e) {
e.printStackTrace();
}
//imageView.setImageURI(uri);
// увеличение
zoom.setOnZoomInClickListener(new View.OnClickListener() {
public void onClick(View v) {
int bmpWidth = bmp.getWidth();
int bmpHeight = bmp.getHeight();
double scale = 1.25;
scaleWidth = (float) (scaleWidth * scale);
scaleHeight = (float) (scaleHeight * scale);
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth,
bmpHeight, matrix, true);
imageView.setImageBitmap(resizeBmp);
}
});
// уменьшение
zoom.setOnZoomOutClickListener(new View.OnClickListener() {
public void onClick(View v) {
int bmpWidth = bmp.getWidth();
int bmpHeight = bmp.getHeight();
double scale = 0.8;
scaleWidth = (float) (scaleWidth * scale);
scaleHeight = (float) (scaleHeight * scale);
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth,
bmpHeight, matrix, true);
imageView.setImageBitmap(resizeBmp);
}
});
}
Klasse public class ViewPhoto erstreckt Aktivität {
private ZoomControls zoom;
CustomImageVIew imageView;
private float scaleWidth = 1;
private float scaleHeight = 1;
private Bitmap bmp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_photo_layout);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
imageView = (CustomImageVIew)findViewById(R.id.customImageVIew);
zoom = (ZoomControls) findViewById(R.id.zoomControls);
//получаем интент, достаем из него фотку и ставим в имиджвью
Intent intent = getIntent();
Uri uri = (Uri) intent.getExtras().getParcelable("fotka");
try {
bmp = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), uri);
} catch (IOException e) {
e.printStackTrace();
}
//imageView.setImageURI(uri);
// увеличение
zoom.setOnZoomInClickListener(new View.OnClickListener() {
public void onClick(View v) {
int bmpWidth = bmp.getWidth();
int bmpHeight = bmp.getHeight();
double scale = 1.25;
scaleWidth = (float) (scaleWidth * scale);
scaleHeight = (float) (scaleHeight * scale);
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth,
bmpHeight, matrix, true);
imageView.setImageBitmap(resizeBmp);
}
});
// уменьшение
zoom.setOnZoomOutClickListener(new View.OnClickListener() {
public void onClick(View v) {
int bmpWidth = bmp.getWidth();
int bmpHeight = bmp.getHeight();
double scale = 0.8;
scaleWidth = (float) (scaleWidth * scale);
scaleHeight = (float) (scaleHeight * scale);
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth,
bmpHeight, matrix, true);
imageView.setImageBitmap(resizeBmp);
}
});
}
CustomImageVIew erweitert Image und erkennen, Multi-Touch.
view_photo_layout.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ZoomControls
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/zoomControls"
android:layout_gravity="center_horizontal|bottom"
android:layout_margin="5dp" />
<ru.bunakov.testapplication.CustomImageVIew
android:id="@+id/customImageVIew"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:scaleType="matrix"/>
</FrameLayout>
конечно да zu erholen! ;). –
замени 'onActivityCreated' метод, я на правильно понят в том посте –
спасибо! получилось! работает! Теперь открывается новая активити, но пустая! И в логах ничего .... откуда копать? –