2016-03-22 15 views
0

auf Galerie speichere ich unten Code für ScreenShot verwenden:wie Screenshot nehmen und es nicht in android

public class startActivity{ 
    Bitmap layoutBitmap = Bitmap.createBitmap(mReLayout.getWidth(), mReLayout.getHeight(), Bitmap.Config.ARGB_4444); 
    Canvas canvas = new Canvas(layoutBitmap); 
    mReLayout.draw(canvas); 
    Uri uri = getImageUri(getApplicationContext(), layoutBitmap); 
    Intent mIntent = new Intent(CategoryActivity.this, MainActivity.class); 
    mIntent.putExtra(Constant.BYTE_IMAGE, uri.toString()); 
    startActivity(mIntent); 
} 

MainActivity.class

private void setUpImageBitmap() { 
    Uri uri = Uri.parse(getIntent().getExtras().getString(Constant.BYTE_IMAGE)); 
    String selectedImagePath = getPath(uri); 
    mImageCube.setImageBitmap(Utils.decodeSampledBitmapFromResource(selectedImagePath, 200, 200)); 

} 

public String getPath(Uri uri) { 
    Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
    cursor.moveToFirst(); 
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
    return cursor.getString(idx); 
} 

Klasse Utils

public static Bitmap decodeSampledBitmapFromResource(String resId, 
                int reqWidth, int reqHeight) { 

    // First decode with inJustDecodeBounds=true to check dimensions 
    final BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(resId, options); 

    // Calculate inSampleSize 
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); 

    // Decode bitmap with inSampleSize set 
    options.inJustDecodeBounds = false; 
    return BitmapFactory.decodeFile(resId, options); 
} 

public static int calculateInSampleSize(
     BitmapFactory.Options options, int reqWidth, int reqHeight) { 
// Raw height and width of image 
    final int height = options.outHeight; 
    final int width = options.outWidth; 
    int inSampleSize = 2; 

    if (height > reqHeight || width > reqWidth) { 
     if (width > height) { 
      inSampleSize = Math.round((float) height/(float) reqHeight); 
     } else { 
      inSampleSize = Math.round((float) width/(float) reqWidth); 
     } 
    } 
    return inSampleSize; 
} 

Wie kann ich einen Screenshot machen, ohne ihn in der Galerie zu speichern?

+0

was ist Ihre Frage? Sie müssen einen Screenshot machen, aber nicht im Speicher speichern? oder Screenshot erstellen, aber nicht in der Galerie sichtbar sein oder Screenshot aufnehmen, aber nicht in die Galerie gelangen? Sag mir –

+0

Ich möchte es nicht in der Galerie speichern. Hilf mir! –

+0

das bedeutet zu vermeiden, in der Galerie zu zeigen? Recht? –

Antwort

0

Hier unten Code für die Erstellung von Screenshot für jede Android-Steuerung, bedeutet ImageView oder Layout. unter dem Code für ImageView.

ImageView iv = (ImageView) findViewById(R.id.imageView1); 
    View v1 = getWindow().getDecorView().getRootView(); 
    // View v1 = iv.getRootView(); //even this works 
    // View v1 = findViewById(android.R.id.content); //this works too 
    // but gives only content 
    v1.setDrawingCacheEnabled(true); 
    myBitmap = v1.getDrawingCache(); 
    saveBitmap(myBitmap); 

saveBitmap (myBitmap); speichern

 public void saveBitmap(Bitmap bitmap) { 
    String filePath = Environment.getExternalStorageDirectory() 
    + File.separator + "Pictures/screenshot.png"; 
    String nomedia = Environment.getExternalStorageDirectory() 
    + File.separator + "Pictures/.nomedia"; 
    File nomediaFile= new File(nomedia); 
    if(!nomediaFile.exists()){ 
    nomediaFile.createNewFile(); 
     } 
    File imagePath = new File(filePath); 
    FileOutputStream fos; 
    try { 
      fos = new FileOutputStream(imagePath); 
      bitmap.compress(CompressFormat.PNG, 100, fos); 
      fos.flush(); 
      fos.close(); 
      sendMail(filePath); 
    } catch (FileNotFoundException e) { 
      Log.e("GREC", e.getMessage(), e); 
    } catch (IOException e) { 
      Log.e("GREC", e.getMessage(), e); 
    } 
    } 

Jetzt müssen Sie nicht alle Bilder in der Galerie zeigen wollen, dann sind Sie .nomedia Datei im Ordner Screenshot ceate haben. siehe untenstehenden Code.

 String nomedia = Environment.getExternalStorageDirectory() 
    + File.separator + "Pictures/.nomedia"; 
    File nomediaFile= new File(nomedia); 
    if(!nomediaFile.exists()){ 
    nomediaFile.createNewFile(); 
     } 

Oben Code bereits in saveBitmap() -Methode implementiert. Ich denke, helfen Sie für Sie das ...

Jetzt möchten Sie dieses Bild teilen dann Pfad des Bildes und teilen mit unten Code.

public void shareImage(String path) { 
       Uri myUri = Uri.parse("file://" + path); 
       Intent shareIntent = new Intent(); 
       shareIntent.setAction(Intent.ACTION_SEND); 
       shareIntent.putExtra(Intent.EXTRA_TEXT, "Hello"); 
       shareIntent.putExtra(Intent.EXTRA_STREAM, myUri); 
       shareIntent.setType("image/jpeg"); 
       shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
       startActivity(Intent.createChooser(shareIntent, "send")); 
       } 
+0

vielen Dank !! –

+0

wie ich Bilder auf ImageView –

+0

nur Bilder aus Ihrem Pfad und Pfad konvertieren in Uri anzeigen kann. Uri in Bildansicht gesetzt. –

0

Die Bilddateien müssen irgendwo gespeichert werden. Ich denke, deine eigentliche Frage ist, wie man Bilddateien aus der Galerie-App ausblenden kann.

Um sich aus der Galerie App zu verstecken gibt es zwei Möglichkeiten, dies zu tun:

1. eine .nomedia Datei erstellen:

In dem Ordner, in dem Sie Ihre Bilder speichern (gegeben durch uri) Sie muss eine Datei mit dem Namen .nomedia erstellen.

2. Präfix Ordner mit einem Punkt:

Sie können die Ordner umbenennen sich mit einem Punkt. Beispiel: .images.