내 앱으로 사진을 찍고 Instagram에 보내고 싶지만 사진을 찍을 때 몇 가지 문제가 있기 때문에 몇 가지 문제가 있습니다. 지연하여 저장하십시오.안드로이드 갤러리에 사진을 저장하고 있지만 사진을 저장하는 데 지연이 있습니다.
내 애플
먼저 내 응용 프로그램과 함께 사진을 촬영하고 갤러리에서이 사진을 저장 이런 식으로하고있다.
사용자가 이미지를 개선하거나 개선하지 않으면. 그는 aproves 경우 버튼을 클릭하고 Instagram에 보냅니다,하지만 왜 애플 리케이션이 내 이미지를 저장하는 데 몇 초가 걸리는지 모르겠다.
내가 사용하고 싶은 이미지를 얻는 나의 방법은 내 폴더의 갤러리에 마지막으로 저장 한 그림을 얻는 것입니다.
이것은 사진을 찍기 위해 호출 한 코드입니다. 여기
camera = cameraSurfaceView.getCamera();
camera.takePicture(new ShutterCallback() {
@Override
public void onShutter() {
AudioManager mgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mgr.playSoundEffect(AudioManager.FLAG_PLAY_SOUND);
}
}, null, new HandlePictureStorage(preview,cameraSurfaceView.getFront()));
imageSelected = false;
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));
내가 사진을 얻을
public class HandlePictureStorage implements PictureCallback {
FrameLayout preview;
int wid = 0;
Bitmap bitmapFinal;
boolean front;
File storagePath = new File(Environment.getExternalStorageDirectory() + "/Tubagram/");
public HandlePictureStorage(FrameLayout preview, boolean front){
this.preview = preview;
this.front = front;
}
@Override
public void onPictureTaken(byte[] picture, Camera camera) {
Matrix matrix = new Matrix();
if (front){
matrix.postRotate(270);
}else{
matrix.postRotate(90);
}
Bitmap cameraBitmap = BitmapFactory.decodeByteArray(picture, 0, picture.length);
wid = cameraBitmap.getWidth();
Bitmap scaledBitmap = Bitmap.createScaledBitmap(cameraBitmap, wid, wid, true);
Bitmap imagemRotacionada = Bitmap.createBitmap(scaledBitmap,0,0,scaledBitmap.getWidth(),scaledBitmap.getHeight(),matrix,true);
Bitmap newImage = Bitmap.createBitmap
(612, 612, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(newImage);
canvas.drawBitmap(imagemRotacionada, 0f, 0f, null);
Drawable drawable = preview.getForeground();
drawable.setBounds(0, 0, 612, 612);
drawable.draw(canvas);
File myImage = new File(storagePath,"TUBAGRAM_" + System.currentTimeMillis() +".png");
try
{
FileOutputStream out = new FileOutputStream(myImage);
newImage.compress(Bitmap.CompressFormat.PNG, 100, out);
bitmapFinal = newImage;
out.flush();
out.close();
Log.i("Imagem Tubagram salva em ", ""+ myImage);
}
catch(FileNotFoundException e)
{
Log.d("In Saving File", e + "");
}
catch(IOException e)
{
Log.d("In Saving File", e + "");
}
drawable = null;
// newImage.recycle();
newImage = null;
cameraBitmap.recycle();
cameraBitmap = null;
}
을 저장하는 데 사용하는 클래스입니다 그리고 여기이 사진을 사용하고 인스 타 그램을 보낼 때 코드입니다
if (verificaInstagram()){
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("image/*");
Cursor c1 = pickLastPhotoAlbum();
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+Environment.getExternalStorageDirectory()+ "/Tubagram/" + c1.getString(1)+".png"));
shareIntent.setPackage("com.instagram.android");
c1.close();
startActivity(shareIntent);
}else{
Toast.makeText(v.getContext(), "Você não possui o Instagram no seu smartphone!", Toast.LENGTH_SHORT).show();
}
사람은 도움이 될 수 있습니다 이걸로 나?
얼마나 지연 되었습니까? 기본 카메라 앱으로 사진을 찍을 때 알고있는 시간을 절약하는 데 시간이 걸립니다. 나는 지연이 최대 분이 아니라면, 그걸로 처리하고 ProgressDialog를 추가하여 사용자에게 기다려야한다고 생각한다. – vilpe89
몇 초가 걸립니다. 나는이 솔루션이 작동하도록 말하려고 애를 썼다. 고마워요 @ vilpe89. – groff07
누군가이 문제를 해결할 다른 방법이 있다면 제게 말하십시오. – groff07