[IITCm] new feature: share a screenshot of the current view

This commit is contained in:
fkloft
2014-03-01 13:07:40 +01:00
parent 13893546a4
commit b30c1e4aa3
6 changed files with 103 additions and 29 deletions

View File

@ -13,6 +13,8 @@ import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.net.Uri;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
@ -38,11 +40,13 @@ import android.widget.TextView;
import android.widget.Toast;
import com.cradle.iitc_mobile.IITC_NavigationHelper.Pane;
import com.cradle.iitc_mobile.share.ShareActivity;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Stack;
@ -571,6 +575,9 @@ public class IITC_Mobile extends Activity
final CookieManager cm = CookieManager.getInstance();
cm.removeAllCookie();
return true;
case R.id.menu_send_screenshot:
sendScreenshot();
return true;
case R.id.menu_debug:
mDebugging = !mDebugging;
updateViews();
@ -842,6 +849,26 @@ public class IITC_Mobile extends Activity
mPermalink = href;
}
private void sendScreenshot() {
mIitcWebView.setDrawingCacheEnabled(true);
final Bitmap bitmap = mIitcWebView.getDrawingCache();
if (bitmap == null) {
Log.e("getDrawingCache() returned null!");
return;
}
try {
final File cache = getExternalCacheDir();
final File file = File.createTempFile("IITC screenshot", ".png", cache);
if (!Bitmap.createBitmap(bitmap).compress(CompressFormat.PNG, 100, new FileOutputStream(file))) {
// quality is ignored by PNG
throw new IOException("Could not compress bitmap!");
}
startActivity(ShareActivity.forFile(this, file, "image/png"));
} catch (final IOException e) {
Log.e("Could not generate screenshot", e);
}
}
@Override
public NdefMessage createNdefMessage(final NfcEvent event) {
NdefRecord[] records;