- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序开发实习即将结束,我被分配从头开始创建应用程序,而不是移植苹果版本。我无法弄清楚如何保存应用内屏幕截图,然后将其保存到设备。我不想在外部保存,因为你不能假设每个人都使用 SD 卡。
这是我的代码,当我点击发送时,我想要生成并保存屏幕截图,这样当我使用我的共享 Intent 时,我可以发送屏幕截图。
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.ShareActionProvider;
import android.support.v4.view.MenuItemCompat;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.TextView;
import android.widget.EditText;
import android.widget.Toast;
import android.text.TextWatcher;
import android.text.Editable;
import android.graphics.Bitmap;
import android.graphics.Typeface;
import android.content.Intent;
import android.content.Context;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class MainActivity extends ActionBarActivity {
TextView CodexTV;
EditText CodexET;
@Override
public class MainActivity extends ActionBarActivity {
TextView CodexTV;
EditText CodexET;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Loading our AvianKingdom Codex Font
Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/WWAvianKingdom-Regular.ttf");
//Text view label
CodexET = ((EditText) findViewById(R.id.CodexMessage));
//REAL-TIME Textview change
CodexET.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) { //Convert the Text to String
String inputText = CodexET.getText().toString();
CodexTV = ((TextView) findViewById(R.id.CustomFontText));
CodexTV.setText(inputText);
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
});
//Applying the font
CodexET.setTypeface(tf);
//Screenshot our Codex'ed Image
CodexET.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
doShare(getDefaultIntent());
captureScreen();
case KeyEvent.KEYCODE_ENTER:
doShare(getDefaultIntent());
captureScreen();
default:
break;
}
}
return false;
}
});
}
// Basic Share Intent to handle Sharing through Applications.
private Intent getDefaultIntent()
{
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
return intent;
}
private ShareActionProvider mShareActionProvider;
这是用户点击发送时调用的函数:
//Function for Screenshot and Saving picture.
public Bitmap captureScreen()
{ // Image naming and path.
String fileName = "DR-Codex.jpg";
// create bitmap screen capture
Bitmap bitmap;
View v1 = CodexET.getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
//Start writing to device.
OutputStream fout = null;
File imageFile;
imageFile = new File(getExternalFilesDir(null), fileName);
try
{
//Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
//intent.setDataAndType(Uri.fromFile(new File(fileName)), "image/*");
//startActivity(intent);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 90, bos);
byte[] bitmapdata = bos.toByteArray();
fout = new FileOutputStream(imageFile);
fout.write(bitmapdata);
fout.flush();
Log.e("File saved yo", "but where");
fout.close();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
Log.e("File Selector", "The selected file can't be shared: " + fileName);
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
Log.e("File Selector", "The selected file can't be shared: " + fileName);
e.printStackTrace();
}
finally {
//Stuff
}
return bitmap;
}
private void doShare(Intent shareintent)
{
mShareActionProvider.setShareIntent(shareintent);
invalidateOptionsMenu();
}
似乎使用 Action.Create_Document Intent 我可以创建一个空白文件,但我的屏幕图像仍未生成。
这是应用程序屏幕的样子。
这是最新的报告列表,我相信我已经突出了问题。
最佳答案
有两件事让我印象深刻......
1) 将 .jpg 扩展名添加到您的文件名中。即“DR-CODEX.jpg”
2) 不要保存到私有(private)内部 getFilesDir,因为那样您将因安全问题而无法共享。而是保存到 getExternalFilesDir(null)
编辑
同样由于 getExternalFilesDir,您将需要在 AndroidManifest.xml 中添加以下内容
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
可能
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
关于java - 如何在 Java 中本地保存文件(截图)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29683504/
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
如何创建 iPhone 屏幕截图?当我打开 Xcode 时,我转到“窗口”>“管理器”,但没有可见的“设备”选项卡。我有一部操作系统为 3.1.2 的越狱手机。 最佳答案 在手机上,按住主页按钮并按
我一直在使用 UIGetScreenImage() 来获取 UIImagePickerController 的屏幕截图。基本上我使用相机覆盖层,然后当我拍摄屏幕截图时,我会看到相机预览显示的图像以及我
我想对我创建的面板进行屏幕截图,代码如下。任何人都可以告诉我为什么我没有得到。谢谢 public static final void makeScreenshot(JFrame argFram
我正在开发一个应用程序,它使用前置摄像头为使用该应用程序的人模拟一面镜子。我已经实现了一个“平视显示器”,它位于相机 View 的前面并显示一些东西。目前这很好用。现在我想实现一种每 5 秒截取一次屏
如何使用安卓模拟器截屏? 最佳答案 在 Eclipse 中打开 Devices View (Window -> Show View -> Other, Android -> Devices),右侧有一
我正在开发一个用于在设备中截取屏幕截图的应用程序。在这个应用程序中,我们可以在屏幕上绘制任何东西。为此,我使用 Canvas、Paint 和 Path 来执行此操作。 我正在使用此代码截取屏幕截图:
如何捕获屏幕并将其保存为 C 中的图像? 操作系统:Windows(XP 和 7) 谢谢 最佳答案 你试过了吗google ?这forum entry有一个示例,包含使用 Win32 API 的 C
我正在尝试使用这段代码: bool SaveBMPFile(char *filename, HBITMAP bitmap, HDC bitmapDC, int width, int height);
我想使用 php 创建网站缩略图(屏幕截图)。我有一个运行 centos 5.5 的专用服务器,所以我可以在上面安装软件。 我需要一个免费的解决方案来在生产服务器上创建网站的缩略图,而无需运行 X 服
我正在尝试截取在 lcdtv 上播放的 roku 应用程序的屏幕截图。 将您的 Roku 置于开发者模式。确认您的 Roku 的 IP 地址。 Side load your app to the Ro
UIImage* image = nil; UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, YES, 0); {
我有一个 View Controller ,它通过按钮进入 TableView Controller 。 在 View Controller 中,导航栏是完全半透明的(如下面的屏幕截图所示)。在 Ta
我使用- (BOOL)presentPreviewAnimated:(BOOL)animated; 来加载文档,然后我想从文档中截取屏幕截图。所以我尝试 UIGraphicsBeginImageCon
我不知道如何使用 css (-fx-... :...) 将这种效果应用于 javaFX 2 中的文本字段; 我需要像屏幕截图中那样的东西。我有一个带有该背景的面板,我需要文本字段将其变暗一点(它看起来
我在我的 Windows 应用程序中使用 C++/Direct2D,我在 pRenderTarget->BeginDraw() 和 pRenderTarget->EndDraw() 之间绘制一些线条和
我正在尝试使用后台服务截取屏幕截图。此服务就像 Facebook chathead,但我希望它在我点击时截取屏幕截图。 我已经开发了一些代码,但它不起作用。我最后尝试的是: private void
我搜索了很多有关在 Android 上截取我的 OpenGL 对象的屏幕截图的信息,并提出了 this解决方案。它工作得很好,但在我的例子中,我在相机 View 之上有相机 View 和 opengl
我开始在 xcode 中编程,当我启动它时,xcode 会问我“你是谁”。有人知道需要做什么吗?谢谢! 截图: 最佳答案 Xcode 包含对 Git 的集成支持。你的屏幕截图是 Git 要求你设置你的
我需要对ARSCNView进行截图,类定义如下: public class SceneLocationView: ARSCNView, ARSCNViewDelegate { } 我正在按照以下方法完
我是一名优秀的程序员,十分优秀!