0

내 앱으로 사진을 찍고 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(); 
} 

사람은 도움이 될 수 있습니다 이걸로 나?

+0

얼마나 지연 되었습니까? 기본 카메라 앱으로 사진을 찍을 때 알고있는 시간을 절약하는 데 시간이 걸립니다. 나는 지연이 최대 분이 아니라면, 그걸로 처리하고 ProgressDialog를 추가하여 사용자에게 기다려야한다고 생각한다. – vilpe89

+0

몇 초가 걸립니다. 나는이 솔루션이 작동하도록 말하려고 애를 썼다. 고마워요 @ vilpe89. – groff07

+0

누군가이 문제를 해결할 다른 방법이 있다면 제게 말하십시오. – groff07

답변

0

확인. 나는이 문제를 해결했다.

나는이 부분을 변경 한 사진을 저장하는 데 사용하는 클래스 ...

FileOutputStream out = new FileOutputStream(myImage); 
newImage.compress(Bitmap.CompressFormat.PNG, 100, out); 
bitmapFinal = newImage; 

out.flush(); 

지금은이 하나를 사용 ...

String nomeImagem = "TUBAGRAM_" + System.currentTimeMillis(); 
url = MediaStore.Images.Media.insertImage(preview.getContext().getContentResolver(), newImage ,nomeImagem, null); 

그리고 나는 동의 사용하는 코드 사진을 보내고 인트라 그램으로 보내십시오.

caminhoImagens = getRealPathFromURI(Uri.parse(hps.getUrl())); 

Log.i("Caminho imagem: ", caminhoImagens); 

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + caminhoImagens)); 

shareIntent.setPackage("com.instagram.android"); 

커서를 사용 중지했습니다.