2016-07-25 6 views
0

現在のアクティビティのスクリーンショットを撮り、共有するにはshare itemのアクションバーの共有ボタンをクリックします。アプリケーションを実行すると、何も出力として表示されません。どのようにして現在のスクリーンショットを撮ることができますか?私にそれの正しい順序を教えてください。ここで現在のアクティビティのスクリーンショットとアクションバーの共有アイコンと共有する

@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(); 
    } 
} 

答えて

0

私のスクリーンショットをSDカードに保存されているとニーズがあるものは何でものために、後に使用することが許さコードです:

まず、ファイルを保存するための適切な権限を追加し、:

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

これはアクティビティで実行されているコードです:

 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(); 
     } 
    } 

これはnは、最近生成された画像を開きます。

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); 
} 

チェックこの回答https://stackoverflow.com/a/5651242/4342876

+0

あなたは歓迎されている –

+0

...あなたの応答をありがとう。 –

関連する問題