一旦调用Camera.takePicture(),我的预览将停止更新,如文档中所述.检测图像捕获过程的最佳方法是什么,并调用startPreview()使其再次开始更新?
根据文档,调用不能放在传递给takePicture的任何回调中,因为它们应该在我调用之前返回.
我目前最好的猜测是创建一个Handler并从JPEG回调中发布一个延迟的Runnable(或者是最后一个定义的回调函数).
如果我在应用程序的缓存目录中创建一个临时文件,我就不能将其作为附件发送.这是因为其他应用程序没有读取文件的权限.
在API 9及更高版本中,我可以使用setReadable(true,false)将文件设置为全局可读.不幸的是,我的目标是API级别7+.我不想依赖SD卡的存在,因此我不能使用getExternalStorageDir()返回的位置来存储它以防万一卡不存在.
即使没有SD卡,如何以可行的方式生成和共享临时文件?
我正在通过调用来自每个Activity的onResume()和来自onPause()的minusActivity()的plusActivity()来跟踪我的应用程序中当前可见的活动数量(应该是0或1)
plus/minusActivity在我的myApplication类中,它扩展了Application.
方法递增和递减计数器.每次调用minusActivity()时,它都会发布一个在2秒后运行的runnable.当runnable执行时,如果另一个活动在2秒前关闭的最后一个活动之后没有打开(例如foregroundedActivities == 0因为没有在2秒内调用plusActivity()),那么它调用一个方法来做一些需要发生的事情当背景.
这是一个片段:
public void plusActivity(){
foregroundedActivities++;
}
public void minusActivity(){
foregroundedActivities--;
timingHandler.removeCallbacks(checkBackgroundTask);
timingHandler.postDelayed(checkBackgroundTask, 2000);
}
public void checkIfBackgrounded(){
if(foregroundedActivities==0){
doWhateverWeDoWhenBackgrounded();
}
}
public Runnable checkBackgroundTask=new Runnable(){
@Override
public void run() {
checkIfBackgrounded();
}
};
Run Code Online (Sandbox Code Playgroud)
鉴于此过程运行的时间范围为2秒,并且不涉及对Activity的回调,是否可以接受完成后台检测的方法,或者我是否真的需要使用服务执行所有这些操作?这似乎是很多开销,我看不到任何好处,因为这似乎工作正常.
我在应用程序中使用androidPlot创建了一个极简主义图表,并且一直试图删除无关的视觉元素.我已经完成了所有工作,除了我无法摆脱视图中图表本身周围的空白空间.这是打开标记时的样子,只是坐在Activity的根视图中:

如何消除内部图表边界和外部视图边界之间的黑色空间?这是我的代码:
mDynamicPlot = (XYPlot) findViewById(R.id.dynamicPlot);
mDynamicPlot.getGraphWidget().setDomainValueFormat(new DecimalFormat("0"));
mDynamicPlot.addSeries(mCpuData, new LineAndPointFormatter(Color.rgb(51, 204, 255), null, Color.rgb(8, 153, 194)));
mDynamicPlot.setDomainStepMode(XYStepMode.INCREMENT_BY_VAL);
mDynamicPlot.setRangeBoundaries(0, 100, BoundaryMode.FIXED);
mDynamicPlot.setDomainStepValue(10);
mDynamicPlot.setRangeStepValue(5.0d);
mDynamicPlot.setRangeValueFormat(new DecimalFormat("#"));
mDynamicPlot.setTicksPerDomainLabel(Integer.MAX_VALUE);
mDynamicPlot.getLayoutManager().remove(mDynamicPlot.getLegendWidget());
mDynamicPlot.getLayoutManager().remove(mDynamicPlot.getRangeLabelWidget());
mDynamicPlot.getLayoutManager().remove(mDynamicPlot.getDomainLabelWidget());
mDynamicPlot.getLayoutManager().remove(mDynamicPlot.getTitleWidget());
mDynamicPlot.getGraphWidget().setMarginTop(10);
mDynamicPlot.setBackgroundPaint(null);
mDynamicPlot.getGraphWidget().setBackgroundPaint(null);
mDynamicPlot.getGraphWidget().setGridBackgroundPaint(null);
mDynamicPlot.getGraphWidget().setDomainLabelPaint(null);
mDynamicPlot.getGraphWidget().setDomainOriginLabelPaint(null);
mDynamicPlot.getGraphWidget().setGridLinePaint(null);
mDynamicPlot.getGraphWidget().setDomainOriginLinePaint(null);
mDynamicPlot.getGraphWidget().setRangeOriginLinePaint(null);
mDynamicPlot.setDrawBorderEnabled(false);
Run Code Online (Sandbox Code Playgroud)
还有我的XML.右边距是为了抵消我想要摆脱的左边空间:
<com.androidplot.xy.XYPlot
android:id="@+id/dynamicPlot"
android:layout_width="fill_parent"
android:layout_height="150dp"
android:layout_marginTop="16dp"
android:layout_marginRight="10dp"
title="Dynamic Plot" />
Run Code Online (Sandbox Code Playgroud)
我在XML中所做的任何事情都不会影响内部界限,包括改变封闭布局的重力.我也试过这些,没有效果:
mDynamicPlot.getRangeLabelWidget().setHeight(0);
mDynamicPlot.getRangeLabelWidget().setPadding(0, 0, 0, 0);
mDynamicPlot.getRangeLabelWidget().setMargins(0, 0, 0, 0);
mDynamicPlot.getLegendWidget().setSize(new SizeMetrics(0, SizeLayoutType.ABSOLUTE, 0, SizeLayoutType.ABSOLUTE));
mDynamicPlot.getRangeLabelWidget().setSize(new SizeMetrics(0, SizeLayoutType.ABSOLUTE, 0, SizeLayoutType.ABSOLUTE));
mDynamicPlot.getDomainLabelWidget().setSize(new SizeMetrics(0, SizeLayoutType.ABSOLUTE, 0, SizeLayoutType.ABSOLUTE));
Run Code Online (Sandbox Code Playgroud)
我需要做些什么才能摆脱所有黑色空间?
我想将包含敏感信息的意图发送到系统上的另一个应用程序,我也写过.在此之前,我需要验证我发送给他们的应用程序是否由我签名,而不仅仅是具有相同包名和类的流氓版本.我该如何以编程方式执行此操作?
我想使用通过startService()和startActivity()调度的显式意图来做到这一点,因此不存在广播意图的问题.也就是说,在我确认我指定的软件包名称是由作者安装和签名之前,我不想发送任何内容(我自己在这种特定情况下).
android ×5
androidplot ×1
camera ×1
certificate ×1
file ×1
file-io ×1
permissions ×1
security ×1