我在最近的Marshmallow构造中有关于相机的问题,更具体地说是手电筒.在任何预先Marshmallow版本上,我需要做的就是打开/关闭闪光灯,如下所示:
private void turnFlashOn(final Camera camera, int flashLightDurationMs) {
if (!isFlashOn()) {
final List<String> supportedFlashModes = camera.getParameters().getSupportedFlashModes();
if (supportedFlashModes != null && supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_TORCH)) {
mParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(mParams);
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
private void turnFlashOff(Camera camera) {
if (camera != null) {
final List<String> supportedFlashModes = camera.getParameters().getSupportedFlashModes();
if (supportedFlashModes != null && supportedFlashModes.contains(Camera.Parameters.FLASH_MODE_OFF)) {
mParams.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(mParams);
}
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,Marshmallow设备开始在野外崩溃.不知何故,camera.getParameters()并camera.setParameters()开始失败的消息,如:
RuntimeException:getParameters失败(空参数)
RuntimeException:setParameters失败
我尝试在获取参数之前启动并停止预览,这不再引发错误.但是,当我打电话时,预览不会恢复camera.startPreview().
我担心释放相机并重新打开它是不可能的,因为这需要几秒钟而且会产生糟糕的体验.
有关如何可靠地打开/关闭Marshmallow手电筒的任何建议吗?
camera android android-camera flashlight android-6.0-marshmallow
我试图在我的productFlavor块中设置buildConfigField,然后在我的gradle构建文件中的其他位置引用该字段,以便在构造apk的名称时可以使用此值.
例如
productFlavors{
flavor1{
buildConfigField "String", "APP_FLAVOR_NAME", '"MyApp-Flavor1"'
}
flavor2{
buildConfigField "String", "APP_FLAVOR_NAME", '"MyApp-Flavor2"'
}
Run Code Online (Sandbox Code Playgroud)
如何在build.gradle脚本中的其他位置访问APP_FLAVOR_NAME?
我也在努力弄清楚如何在buildscript中引用flavor名称本身作为构建apk名称的另一个选项.我怎么能这样做?
我的问题是,在我向我的项目添加了flavor之后,包名称与实际源不同的风味似乎在访问文件时遇到了问题 android_res/drawable.
更具体地说,我有一个调用以下图像的html视图.
<img src="file:///android_res/drawable/image.png">
Run Code Online (Sandbox Code Playgroud)
该图像显示在生产flavor中,其包名称与java文件的目录相同,但它不适用于beta版本:
productFlavors {
production {
packageName "com.company.myapp"
}
beta {
packageName "com.company.beta"
}
}
Run Code Online (Sandbox Code Playgroud)
其中包含java文件的实际目录
java/com/company/myapp
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为资源甚至不在该文件夹中.
如何从中获取值SeekBar?
PRICEbar)例如:如果PRICEbar指向值10 ......我需要得到值10
Filters.java
public class Filters extends Activity implements OnSeekBarChangeListener{
// declare text objects variables
private SeekBar PRICEbar;
private TextView PRICEtextProgress,DISTANCEtextProgress, RATINGtextProgress;
Button back;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// load the layout
setContentView(R.layout.filters);
PRICEbar = (SeekBar)findViewById(R.id.PRICEseekBarID); // make seekbar object
PRICEbar.setOnSeekBarChangeListener(this);
PRICEbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override …Run Code Online (Sandbox Code Playgroud) 有没有办法在Android Studio(build.gradle)中通过多种口味编译依赖项?
我有2个flavorGroups,每2个变种.在4种可能的组合中,我希望能够依赖于lib,只要我是最新的和免费的.latestCompile或freeCompile有效,但latestFreeCompile没有.这是我的build.gradle的相关部分:
android {
defaultConfig {
minSdkVersion 7
targetSdkVersion 19
versionCode 15
versionName "1.9." + versionCode
}
flavorGroups 'sdk', 'cost'
productFlavors {
latest {
flavorGroup 'sdk'
minSdkVersion 8
}
sdk7 {
flavorGroup 'sdk'
minSdkVersion 7
versionName android.defaultConfig.versionName + ".sdk7"
}
free {
flavorGroup 'cost'
}
pro {
flavorGroup 'cost'
}
}
}
dependencies {
// this works:
freeCompile files('libs/StartAppInApp-2.2.1.jar')
// and I would like something like this:
latestFreeCompile 'com.google.android.gms:play-services:4.1.32' // minSdkVersion:8
}
Run Code Online (Sandbox Code Playgroud)
如果我愿意的话:
latestCompile 'com.google.android.gms:play-services:4.1.32'
Run Code Online (Sandbox Code Playgroud)
那么它也将被包含在latestPro中(不需要),如果我使用:
freeCompile 'com.google.android.gms:play-services:4.1.32'
Run Code Online (Sandbox Code Playgroud)
然后它也将包含在sdk7Free中(虽然它需要SDK …
dependencies android gradle android-gradle-plugin android-productflavors
我试图在一行上运行多个命令,例如
(gdb) info threads; c
Args must be numbers or '$' variables.
Run Code Online (Sandbox Code Playgroud)
但看起来gdb不支持.有任何想法吗?
我正在尝试使用OpenCv4Android为Android设备编写一些应用程序.早些时候,我使用的是Android NDK和C++本机代码.但这种技术并不是很清晰.所以我切换到最新的Java API以及OpenCv 2.4.4版本.
我能够编写简单的程序并运行示例.但是,虽然我试图为高级问题编写一些代码,如模型POSE估计,相机校准程序等,但我遇到了这种非常奇怪的混乱.在C++ API中名称非常直观的一些数据类型并不真正适合它们的Java对应物.因此,我将我的功能从C++移植到Java面临着可怕的困难.我在这些职能上面临着完全混乱
请帮助我理解OpenCv Java中使用的术语及其与C++的类比.
另外,请给我一些参考,其中给出了这些术语的清晰和清晰的描述(我试着看一下提供的帮助,但它对我没什么帮助,因为它对C++和Java来说有点类似).
当我启动应用时,Android正在启动错误的活动.
Manifest.xml:
<activity
android:name="com.company.app.activities.RS_SplashScreenActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.company.app.activities.RS_PreviousLauncherActivity"
android:label="@string/app_name"
android:theme="@style/myTheme" >
</activity>
Run Code Online (Sandbox Code Playgroud)
我添加了一个新的Activity RS_SplashScreenActivity并将其设置为启动器活动.它还试图RS_PreviousLauncherActivity在添加之前启动曾经是一个启动器活动RS_SplashScreenActivity.
我确信android会从控制台的以下日志中选择错误的启动器活动.
安慰 :
[2013-10-10 12:03:58 - app] Android Launch!
[2013-10-10 12:03:58 - app] adb is running normally.
[2013-10-10 12:03:58 - app] Performing com.company.app.activities.RS_PreviousLauncherActivity activity launch
[2013-10-10 12:04:01 - app] Uploading app.apk onto device '5C78E6332221CD6A1'
[2013-10-10 12:04:05 - app] Installing app.apk...
[2013-10-10 12:04:12 - app] Success!
[2013-10-10 12:04:12 - app] Starting activity com.company.app.activities.RS_PreviousLauncherActivity …Run Code Online (Sandbox Code Playgroud) 我想在构建阶段对资产做一些事情.这是我的gradle脚本.
project.afterEvaluate{
prepareDependencies.dependsOn("generateMyAssets")
}
task generateMyAssets() {
copy {
from('/') {
include '**/*.html'
filter {
line -> line.replaceAll(/(<img src=\")(?!(.*:.*))/, '<img src="assets:')
}
}
into 'assetsRegxped/'
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果有味道,如何灵活检索资产文件夹的名称(路径).另外我怎么才能改变构建版本?