admin管理员组文章数量:1122852
Andriod
在上一篇文章Android-手电筒应用小思路(一)中提到的是独立手电筒App应用,然而第三方的手电筒应用是有缺陷的。因为如果让第三方手电筒app在后台亮,然后进入照相机,照相机是不能开启的。因为Camera是共享的硬件,但是不支持多个应用同时使用Camera,最起码,Android设计这块的初衷是这样的。
所以就想针对这点做点什么,当然不能像小米系统自带的手电筒那么叼。但是我的做法也能让手电筒亮着,然后进照相机应用,而不会影响照相机的运行。当然我的做法只适合方案公司。
其实我的想法比较简单,就是在进入照相机应用的时候,如果闪光灯亮着,就关闭手电筒。要做的这一点,我把手电筒写在Camera里面,这样就可以在Camera应用中获得手电筒应用的Activity的对象实例,从而更好的控制两者之间使用Camera 硬件的情况。当然你也许会说,通过广播来发送相关的信息,当然也是可以,但那时广播有时候也是会延迟的,所以会存在弊端。
既然要将手电筒放在Camera应用里面就要修改Camera应用。首先在其中增加Android-手电筒应用小思路(一)中所写的TorchActivity.java。然后修改其配置文件,增加下列代码:
<activityandroid:name="com.android.camera.TorchActivity" android:label="@string/torch_title"android:screenOrientation="portrait"android:clearTaskOnLaunch="true"></activity><activity-aliasandroid:name="com.android.camera.TorchLauncher"android:icon="@mipmap/ic_launcher_torch"android:label="@string/torch_title"android:targetActivity="com.android.camera.TorchActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter> </activity-alias>
然后修改TorchActivity.java,增加下面代码:
...
public static TorchActivity mInstance;...
public static TorchActivity getInstance(){return mInstance;
}
再修改CameraActivity.java,在onCreate()和onResume()增加下面代码:
public void onCreate(Bundle state) {if(TorchActivity.getInstance()!= null && TorchActivity.getInstance().torchstate){TorchActivity.getInstance().releaseTorch();TorchActivity.getInstance().finish();}...}public void onResume() {if(TorchActivity.getInstance()!= null && TorchActivity.getInstance().torchstate){TorchActivity.getInstance().releaseTorch();TorchActivity.getInstance().finish();}...}
重新编译Camera 然后push到手机后,你会发现,Launcher上有了手电筒的图标,这也就是一个应用两个ICON图标,充分利用activity-alias。
本文标签: Andriod
版权声明:本文标题:Andriod 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1701461619a409337.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论