小编mre*_*elt的帖子

哪个Android手机有陀螺仪?

我发现很难获得有关哪些Android手机有陀螺仪的整合信息,或者是否有Android手机都有这种传感器.我读到了至少有一个6轴加速度计的一些(特别是三星)手机型号,但我也读到这与真正的陀螺仪不同.

所以我的问题是:

  1. 哪款Android手机有陀螺仪?(应该可以使用Sensor.TYPE_GYROSCOPE自API 3以来可用的Android API )
  2. 哪款Android手机有6轴加速度计?

任何参考如链接,规格等都非常感谢,当然会得到回报.:-)

谢谢你的帮助!

hardware android sensor accelerometer

27
推荐指数
1
解决办法
13万
查看次数

Android:具有现有布局的自定义视图的多个视图子项

我必须在Android中构建更复杂的自定义视图.最终布局应如下所示:

<RelativeLayout>
  <SomeView />
  <SomeOtherView />
  <!-- maybe more layout stuff here later -->
  <LinearLayout>
    <!-- the children -->
  </LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

但是,在XML文件中我只想定义它(不定义SomeView,SomeOtherView等):

<MyCustomView>
  <!-- the children -->
</MyCustomView>
Run Code Online (Sandbox Code Playgroud)

这在Android中是否可行,如果是的话:最干净的方法是什么?我想到的可能的解决方案是"覆盖addView()方法"和"删除所有视图并在以后再次添加它们",但我不确定要走哪条路......

非常感谢您的帮助!:)

java xml android android-custom-view android-layout

27
推荐指数
1
解决办法
1万
查看次数

Android:内核恐慌后如何获取内核日志?

我在我的设备上使用Android Custom ROM,也使用自定义boot.img(自定义内核+ cmdline + ramdisk).我现在希望能够在内核崩溃后立即查看内核日志,但遗憾的是我无法使用串行控制台.

好消息:Android的Linux内核中似乎有一些源/模块正是为此目的编写的.例如,在我的内核的.config文件中激活了以下行:

CONFIG_ANDROID_RAM_CONSOLE=y
CONFIG_ANDROID_RAM_CONSOLE_ENABLE_VERBOSE=y
CONFIG_APANIC=y
CONFIG_APANIC_PLABEL="oem_log"
Run Code Online (Sandbox Code Playgroud)

我的问题是:在我强制内核恐慌以便测试它之后,即通过加载一个简单的恐慌内核模块insmod panic.ko,似乎没有日志被写入名为oem_log的MTD (存在于我的设备上).其次,RAM在重启后也不包含日志,因为它似乎被清除 - 或者也没有写入日志.

那么如何在恐慌之后获取内核日志呢?如果有一种方法可以测试正在运行的系统上的APANIC,那将会很有帮助.也许通过使用内核调试系统?截至目前,我对此很陌生.

在此先感谢您的帮助!

logging android root linux-kernel panic

24
推荐指数
3
解决办法
7万
查看次数

删除水平进度条中的填充

在我们的应用程序中,我们需要一个不确定的进度条,如下所示:

进度条应该如何

我们可以通过在ProgressBar上设置负边距来实现这一点,如下所示:

<ProgressBar
    android:id="@+id/progressbar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="true"
    android:marginTop="-7dp"
    android:visibility="@{loading ? View.VISIBLE : View.GONE}" />
Run Code Online (Sandbox Code Playgroud)

但是因为ConstraintLayout不支持负边距,所以它看起来像这样:

带填充的进度条

好吧,负利润是一个黑客.让我们换一个不同的黑客,好吗?让我们来介绍我们的自定义视图CustomProgressBar,它扩展ProgressBar并覆盖其onDraw方法,如下所示:

@Override
protected void onDraw(Canvas canvas) {
    int marginTop = dpToPx(7);
    canvas.translate(0, -marginTop);
    super.onDraw(canvas);
}
Run Code Online (Sandbox Code Playgroud)

但所有这些都闻起来像坏代码.必须有一个更好的解决方案!你会推荐什么?

java layout android android-studio android-constraintlayout

15
推荐指数
2
解决办法
5537
查看次数

IntelliJ/Android Studio:删除不必要的'this'.

我正在开发一个项目,以前的开发人员添加了许多this.x代码,在我看来,这些代码使代码更长,因此可读性更低.它通过一些Eclipse保存操作放在整个项目中.

我正在寻找的是IntelliJ重构方法,我可以重构整个项目的所有自引用,以便:

this.something = "foo";
Run Code Online (Sandbox Code Playgroud)

成为这个:

something = "foo";
Run Code Online (Sandbox Code Playgroud)

有这样的东西(我正在使用Android Studio 1.2),还是我必须运行正则表达式替换并确保没有任何破坏?

java android this intellij-idea android-studio

13
推荐指数
1
解决办法
1391
查看次数

如何防止Android Market压缩促销图形PNG?

我最近向Android Market(此应用程序)上传了一个新应用程序.我还上传了高分辨率应用程序图标,功能图形和促销图形.

然而,促销图形获得了非常难看的JPEG压缩.这是我上传的图片:

在上传到Android电子市场之前

Android Market就是这样做的:

什么Android Market

有趣的是,Android Market似乎将其转换为JPEG图像,但保留了.png文件扩展名.这是一个错误吗?

这是我试图解决的问题:

  1. 检查图像没有Alpha透明度,是24位并具有正确的分辨率(如此处所述).
  2. 使用256色的优化调色板创建了PNG并上传了它.尽管原始PNG文件小于生成的JPEG文件,但它仍会转换为JPEG格式.
  3. 创建了一个低压缩的JPEG并上传它 - 但问题是一样的.

有人有同样的问题吗?你做了什么修复它?

非常感谢您的帮助!

android google-play

11
推荐指数
1
解决办法
1465
查看次数

使用Android Studio和Gradle进行单元测试?

如何轻松地在Android Studio(IntelliJ)中为我的Android项目添加单元测试?

更确切地说:我想添加一个包含测试代码的文件夹(JUnit 4),并使用常规安装的JDK(不在Android模拟器中)从那里执行单元测试.到目前为止,我将文件夹'test/java /'添加到我的模块中,并将'test'添加为源集,将junit添加为测试依赖项:

sourceSets {
  instrumentTest.setRoot('src/test')
}

dependencies {
  instrumentTestCompile 'junit:junit:4.+'
  // ...
}
Run Code Online (Sandbox Code Playgroud)

当我现在在test/java文件夹中选择Run'All Tests'时,它会给我一个UnsupportedOperationException.

我错过了什么?你如何运行Android项目的单元测试?

对于插件的建议的加分点,其工作方式类似于Eclipse中的"Infinitest" - 我可以简单地保存一个类,并自动执行单元测试.:-)

PS:我不想使用https://github.com/JakeWharton/gradle-android-test-plugin,因为该插件似乎已被弃用.

junit android unit-testing gradle android-studio

10
推荐指数
1
解决办法
5309
查看次数

Android布局:二次视图

在Android应用程序中,我需要向RelativeLayout添加一个符合以下规则的视图:

  1. 视图应该是二次的,即视图的高度和宽度必须匹配.
  2. 视图应该填满整个WIDTH.

它看起来应该是这样的(正方形应该垂直居中):

+-------------+
|  activity   |
|             |
|+-----------+|
||           ||
||  square   ||
||           ||
||           ||
|+-----------+|
|             |
|             |
+-------------+
Run Code Online (Sandbox Code Playgroud)

最后我想要一个显示二次图像的ImageView.目前我通过将视图的宽度和高度都设置为FILL_PARENT来实现此目的,并让ImageView正确绘制图像(使用scaleType = centerInside).

但是:现在我希望有一个与方形视图的顶行对齐的附加视图,这就是我的方法失败的地方.如果我现在将视图的宽度设置为FILL_PARENT,并将其高度设置为WRAP_CONTENT,则图像将不再适合整个宽度.

你有解决这个问题的方法吗?如果可以通过编写XML来完成,那将是更好的选择.

提前致谢!

xml user-interface android android-layout

7
推荐指数
1
解决办法
6000
查看次数

IntelliJ /结构搜索:删除仅调用super方法的无用方法

在我的一个Android项目中(但不一定与Android绑定)我有很多方法调用,除了炸掉代码之外什么都不做,可以自动删除.例子:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    return super.onKeyDown(keyCode, event);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    return super.onCreateOptionsMenu(menu);
}

@Override
public void onDestroy() {
    super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)

我找不到任何帮助我自动删除这些表达式的检查,所以我尝试了结构搜索.到目前为止我的尝试:我复制了"注释方法"的模板并进行了2次小改动.

  1. $ Annotation $更改为= 1,text =覆盖
  2. 使用occurrence = 1添加$ Statement $变量

模板代码:

class $Class$ {
    @$Annotation$( )
    $MethodType$ $MethodName$($ParameterType$ $ParameterName$) {
        $Statement$;
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这么好 - 它只是在体内找到一条线的方法.但是现在我想明确地搜索调用super方法的精确语句(有点像$ MethodName $的后引用),但它也返回超值(当不是void时).有任何想法吗?

我相信这将是一个非常有用的检查,可以集成到主IntelliJ代码库中.:-)

java android intellij-idea structural-search android-studio

7
推荐指数
1
解决办法
1133
查看次数

Jetpack Compose:MutableState&lt;Boolean&gt; 未按预期工作

在我们的 Android 应用程序中,我们希望将 Compose 引入一个简单的调试屏幕,我们可以在其中启用/禁用 SharedPreferences。我正在尝试使用 Compose 界面来运行它MutableState- 但它并不像我想象的那样工作。我的计划是暂时用于MutableState在 SharedPreferences 中设置布尔值(在稍后迁移到 DataStore 之前)。

这是我的想法:

private class MyOwnState(startWith: Boolean) : MutableState<Boolean> {
    override var value: Boolean = startWith
    override fun component1(): Boolean = value
    override fun component2(): (Boolean) -> Unit = { value = it }
}

// then, in composable:
var value by remember { MyOwnState(false) }
Run Code Online (Sandbox Code Playgroud)

当然,在现实生活中我会覆盖value- 但这个例子就足够了,因为它不起作用。状态更改不会传播,UI 也不会更新。

为了说明这一点,我将代码片段by remember { mutableStateOf(false) }by remember { MyOwnState(false) }. 第一个有效(开关已更新),第二个无效。 …

android state kotlin android-jetpack-compose

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