Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何拍摄截图?_Android_Screenshot - Fatal编程技术网

Android 如何拍摄截图?

Android 如何拍摄截图?,android,screenshot,Android,Screenshot,我正在拍摄一张相亲照片的截图,但它导致了错误 错误: 05-10 17:43:44.249: ERROR/AndroidRuntime(7721): Caused by: java.lang.NullPointerException 05-10 17:43:44.249: ERROR/AndroidRuntime(7721): at android.graphics.Bitmap.createBitmap(Bitmap.java:358) 05-10 17:43:44.249: ERR

我正在拍摄一张相亲照片的截图,但它导致了错误

错误:

 05-10 17:43:44.249: ERROR/AndroidRuntime(7721): Caused by: java.lang.NullPointerException
05-10 17:43:44.249: ERROR/AndroidRuntime(7721):     at android.graphics.Bitmap.createBitmap(Bitmap.java:358)
05-10 17:43:44.249: ERROR/AndroidRuntime(7721):     at com.API.Connect.share(FacebookConnect.java:110)
public class Connect extends Activity implements LoginListener {

    public static String news = " ";

    RelativeLayout bitmapimage;

    Bitmap bitmap;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image);
        bitmapimage = (RelativeLayout) findViewById(R.id.bitmapimg);
        TextView txtlove = (TextView) findViewById(R.id.txtlove);
        txtlove.setText(news.toString());
        share();

    }

    public void share() {

        View v1 = bitmapimage;
        v1.setDrawingCacheEnabled(true);

        bitmap = Bitmap.createBitmap(v1.getDrawingCache());

        v1.setDrawingCacheEnabled(false);

        saveImage();

        // TODO Auto-generated method stub

    }

    void saveImage() {
        String state = Environment.getExternalStorageState();
        Environment.MEDIA_MOUNTED.equals(state);

        File myDir = new File("/mnt/sdcard/DCIM/Camera");
        myDir.mkdirs();

        String fname = "mytry.jpg";
        File file = new File(myDir, fname);
        if (file.exists())
            file.delete();
        try {
            FileOutputStream out = new FileOutputStream(file);
            // create a Bitmap object from our image path.
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
代码:

 05-10 17:43:44.249: ERROR/AndroidRuntime(7721): Caused by: java.lang.NullPointerException
05-10 17:43:44.249: ERROR/AndroidRuntime(7721):     at android.graphics.Bitmap.createBitmap(Bitmap.java:358)
05-10 17:43:44.249: ERROR/AndroidRuntime(7721):     at com.API.Connect.share(FacebookConnect.java:110)
public class Connect extends Activity implements LoginListener {

    public static String news = " ";

    RelativeLayout bitmapimage;

    Bitmap bitmap;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image);
        bitmapimage = (RelativeLayout) findViewById(R.id.bitmapimg);
        TextView txtlove = (TextView) findViewById(R.id.txtlove);
        txtlove.setText(news.toString());
        share();

    }

    public void share() {

        View v1 = bitmapimage;
        v1.setDrawingCacheEnabled(true);

        bitmap = Bitmap.createBitmap(v1.getDrawingCache());

        v1.setDrawingCacheEnabled(false);

        saveImage();

        // TODO Auto-generated method stub

    }

    void saveImage() {
        String state = Environment.getExternalStorageState();
        Environment.MEDIA_MOUNTED.equals(state);

        File myDir = new File("/mnt/sdcard/DCIM/Camera");
        myDir.mkdirs();

        String fname = "mytry.jpg";
        File file = new File(myDir, fname);
        if (file.exists())
            file.delete();
        try {
            FileOutputStream out = new FileOutputStream(file);
            // create a Bitmap object from our image path.
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我想我发现了你的错误。 getdrawingcache已返回位图,因此不必创建新位图 这可能会导致空指针异常

所以你应该试试

bitmap=v1.getDrawingCache()

而不是

bitmap=bitmap.createBitmap(v1.getDrawingCache())

让我知道这是否有效

问候,
我想我已经发现了你的错误。 getdrawingcache已返回位图,因此不必创建新位图 这可能会导致空指针异常

所以你应该试试

bitmap=v1.getDrawingCache()

而不是

bitmap=bitmap.createBitmap(v1.getDrawingCache())

让我知道这是否有效

问候,
Wottah

你想做的是正确的。但在onCreate()中,您的视图不会绘制。它只是膨胀了。所以你可能需要考虑使用下面的方法。试试这个

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
     super.onWindowFocusChanged(hasFocus);
    share();  //Call your share() here. 
}

一旦绘制视图,就会调用此方法,因此可以通过重写此方法来获取位图

你想做的是正确的。但在onCreate()中,您的视图不会绘制。它只是膨胀了。所以你可能需要考虑使用下面的方法。试试这个

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
     super.onWindowFocusChanged(hasFocus);
    share();  //Call your share() here. 
}

一旦绘制视图,就会调用此方法,因此可以通过重写此方法来获取位图

Nidhi请关注此[链接][1]。我希望它对您有用。[1] :Nidhi请关注此[链接][1]。我希望它对您有用。[1]: