2016-09-05 6 views
0

Ich arbeite an einem Android-Projekt, in dem ich den Screenshot der aktuellen Aktivität nehmen und das als .jpeg-Datei in meinem Android-Gerät speichern möchte.Screenshot in android mit C#

Wenn ich Instanz von Fileoutputstream verwenden Sie den Strom von Bitmap-Bild in eine Datei zu schreiben, es gibt mir Fehler folgende

Argument 3 kann von ‚java.io.FileOutputStream‘ auf ‚System.IO nicht umgesetzt. Stream

Mein Code

private void ShareButton_Click(object sender, EventArgs e) 
    { 
     //create a bitmap screen capture 
     View screen = FindViewById(Resource.Layout.AboutImage); 
     Bitmap bitmap = Bitmap.CreateBitmap(screen.GetDrawingCache(false)); 
     screen.SetWillNotCacheDrawing(true); 
     image = new File(directory, "Eco_Friendly " + mc.identifier); 

     FileOutputStream outputstream = new FileOutputStream(image); 

     int quality = 100; 
     bitmap.Compress(Bitmap.CompressFormat.Jpeg, quality, outputstream);//Here is error 
    } 

F: Wie dieses Problem zu lösen?

+0

[Wie programmgesteuert einen Screenshot in Android erstellen?] (Http://stackoverflow.com/questions/2661536/how-to-programmatically-take-a-screenshot-in-android) –

Antwort

1

Versuchen Sie diesen Code:

package com.screen.shots; 

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.drawable.BitmapDrawable; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 

public class CaptureScreenShots extends Activity { 
    LinearLayout L1; 
    ImageView image; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.screen_shots); 
     L1 = (LinearLayout) findViewById(R.id.LinearLayout01); 
      Button but = (Button) findViewById(R.id.munchscreen); 
      but.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        View v1 = L1.getRootView(); 
        v1.setDrawingCacheEnabled(true); 
        Bitmap bm = v1.getDrawingCache(); 
        BitmapDrawable bitmapDrawable = new BitmapDrawable(bm); 
        image = (ImageView) findViewById(R.id.screenshots); 
        image.setBackgroundDrawable(bitmapDrawable); 
       } 
      }); 
    } 

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

} 

Ergebnis:

enter image description here

0

wie diese

View root = getWindow().getDecorView().getRootView(); 
root.setDrawingCacheEnabled(true); 
root.buildDrawingCache(); 
Bitmap snapshot = root.getDrawingCache(); 

zuletzt sollten Sie diese

nennen
root.destroyDrawingCache();