小编Cap*_*mmo的帖子

捕获图像后调用StartPreview()的最佳方法是什么?

一旦调用Camera.takePicture(),我的预览将停止更新,如文档中所述.检测图像捕获过程的最佳方法是什么,并调用startPreview()使其再次开始更新?

根据文档,调用不能放在传递给takePicture的任何回调中,因为它们应该在我调用之前返回.

我目前最好的猜测是创建一个Handler并从JPEG回调中发布一个延迟的Runnable(或者是最后一个定义的回调函数).

camera android

12
推荐指数
2
解决办法
7260
查看次数

在没有SD卡的应用程序之间共享临时文件

如果我在应用程序的缓存目录中创建一个临时文件,我就不能将其作为附件发送.这是因为其他应用程序没有读取文件的权限.

在API 9及更高版本中,我可以使用setReadable(true,false)将文件设置为全局可读.不幸的是,我的目标是API级别7+.我不想依赖SD卡的存在,因此我不能使用getExternalStorageDir()返回的位置来存储它以防万一卡不存在.

即使没有SD卡,如何以可行的方式生成和共享临时文件?

permissions file-io android file

6
推荐指数
1
解决办法
3002
查看次数

简单检查Android应用程序后台

我正在通过调用来自每个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的回调,是否可以接受完成后台检测的方法,或者我是否真的需要使用服务执行所有这些操作?这似乎是很多开销,我看不到任何好处,因为这似乎工作正常.

android

5
推荐指数
1
解决办法
1913
查看次数

如何在AndroidPlot中删除图表周围的所有空间?

我在应用程序中使用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)

我需要做些什么才能摆脱所有黑色空间?

android androidplot

5
推荐指数
1
解决办法
3011
查看次数

如何验证系统上的其他应用程序是否为正版?

我想将包含敏感信息的意图发送到系统上的另一个应用程序,我也写过.在此之前,我需要验证我发送给他们的应用程序是否由我签名,而不仅仅是具有相同包名和类的流氓版本.我该如何以编程方式执行此操作?

我想使用通过startService()和startActivity()调度的显式意图来做到这一点,因此不存在广播意图的问题.也就是说,在我确认我指定的软件包名称是由作者安装和签名之前,我不想发送任何内容(我自己在这种特定情况下).

security android certificate android-intent

5
推荐指数
1
解决办法
177
查看次数