2016-07-25 14 views
0

Ich möchte aktuelle Aktivität Screenshot nehmen und teilen Sie es auf share item klicken Sie in Actionbar Share-Taste. Wenn ich eine Anwendung starte, würde mir nichts als Ausgabe angezeigt werden. Wie kann ich den aktuellen Screenshot aufnehmen? Bitte sag mir die richtige Reihenfolge.aktuelle Aktivität Screenshot und teilen Sie es mit Teilen Symbol in der Aktionsleiste

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.menu_item: 

      try{ 
       takeScreenShot(av); // av is instance of hello 
      } 
      catch (Exception e) { 
       System.out.println(e); 
      } 

      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 


public static void shoot(Activity a,String b) { 
    //savePic(takeScreenShot(a), "sdcard/xx.png"); 
    savePic(takeScreenShot(a), b); 
} 
private static Bitmap takeScreenShot(Activity activity) 
{ 
    View view = activity.getWindow().getDecorView(); 
    view.setDrawingCacheEnabled(true); 
    view.buildDrawingCache(); 
    Bitmap b1 = view.getDrawingCache(); 
    Rect frame = new Rect(); 
    activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); 
    int statusBarHeight = frame.top; 
    int width = activity.getWindowManager().getDefaultDisplay().getWidth(); 
    int height = activity.getWindowManager().getDefaultDisplay().getHeight(); 

    Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight); 
    view.destroyDrawingCache(); 
    return b; 
} 
private static void savePic(Bitmap b, String strFileName) 
{ 
    FileOutputStream fos = null; 
    try 
    { 
     fos = new FileOutputStream(strFileName); 
     if (null != fos) 
     { 
      b.compress(Bitmap.CompressFormat.PNG, 90, fos); 
      fos.flush(); 
      fos.close(); 
     } 
    } 
    catch (FileNotFoundException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 

Antwort

0

Hier ist der Code, der mein Screenshot auf SD-Karte und verwendet später für was auch immer Ihre Bedürfnisse gespeichert werden dürfen, sind:

Fügen Sie zunächst entsprechende Berechtigung Datei zu speichern:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

Und das ist der Code (in einer Aktivität ausgeführt):

 private void takeScreenshot() { 
     Date now = new Date(); 
     android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now); 

     try { 
      // image naming and path to include sd card appending name you choose for file 
      String mPath = Environment.getExternalStorageDirectory().toString() + "/" + now + ".jpg"; 

      // create bitmap screen capture 
      View v1 = getWindow().getDecorView().getRootView(); 
      v1.setDrawingCacheEnabled(true); 
      Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache()); 
      v1.setDrawingCacheEnabled(false); 

      File imageFile = new File(mPath); 

      FileOutputStream outputStream = new FileOutputStream(imageFile); 
      int quality = 100; 
      bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream); 
      outputStream.flush(); 
      outputStream.close(); 

      openScreenshot(imageFile); 
     } catch (Throwable e) { 
      // Several error may come out with file handling or OOM 
      e.printStackTrace(); 
     } 
    } 

Und das ist, wie Sie ca n öffnen Sie die vor kurzem generierte Bild:

private void openScreenshot(File imageFile) { 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    Uri uri = Uri.fromFile(imageFile); 
    intent.setDataAndType(uri, "image/*"); 
    startActivity(intent); 
} 

Check diese Antwort https://stackoverflow.com/a/5651242/4342876

+0

Danke ... für Ihre Antwort ... –

+0

Sie sind willkommen. –