0

特定の瞬間にスクリーンショットを撮り、ファイルシステムに保存する必要があるアプリケーションを開発しています。私の問題は、デバイスがリセットされるまでファイルエクスプローラーに画像が表示されないことです。一部のモデルでは、画像が表示されず、読み取り不能な img ファイル (曲線など) です。

画像を取得するための私のコードは次のとおりです。

private Bitmap getScreenShot(){
    Bitmap bitmap;
    bitmap = new Bitmap(Display.getWidth(), Display.getHeight());
    Display.screenshot(bitmap);
    // return the screen shot
    return bitmap;
}

private void saveInMemory(){
    Bitmap screenShot = getScreenShot();

    Date dateNow = new Date ();

    SimpleDateFormat dateformatYYYYMMDD = new SimpleDateFormat("yyyyMMddHHmmss");

    String timeStamp = dateformatYYYYMMDD.format(dateNow);

    String mFileName = System.getProperty("fileconn.dir.photos")
                + "RM_" + timeStamp + ".jpg";

    PNGEncodedImage png = PNGEncodedImage.encode(screenShot);

    writeFile(png.getData(), mFileName);

}

private void writeFile(byte[] data, String fileName) {
    FileConnection fconn = null;
    try {
        fconn = (FileConnection) Connector.open(fileName);
    } catch (IOException e) {
        System.out.print("Error opening file");
    }

    if (fconn.exists()){
        try {
            fconn.delete();
        } catch (IOException e) {
            System.out.print("Error deleting file");
        }
    }

    try {
        fconn.create();
    } catch (IOException e) {
        System.out.print("Error creating file");
    }
    OutputStream out = null;

    try {
        out = fconn.openOutputStream();
    } catch (IOException e) {
        System.out.print("Error opening output stream");
    }

    try {
        out.write(data);
    } catch (IOException e) {
        System.out.print("Error writing to output stream");
    }

    try {
        fconn.close();
    } catch (IOException e) {
        System.out.print("Error closing file");
    }
}
4

1 に答える 1

1

私は試しませんでした。しかし、なぜ png ファイルに .jpg 拡張子を生成するのでしょうか?

正解は、出力ストリームが適切に閉じられていないことです。

于 2012-07-23T16:09:43.630 に答える