小编ami*_*phy的帖子

如何使用 Android Room @Ignore Sqlite 实体列

我当前的 Android 应用程序需要从本地 Sqlite 数据库中获取带有计数字段的行。

我意识到我需要让我的 DO 实体定义此计数字段并 @Ignore(ed)

我用谷歌搜索并找到了这个页面

@Entity
data class User(
    @PrimaryKey val id: Int,
    val firstName: String?,
    val lastName: String?,
    @Ignore val picture: Bitmap?
)
Run Code Online (Sandbox Code Playgroud)

但是,当我将这个确切的 Kotlin 代码复制并粘贴到我的应用程序中时,它无法构建并出现这些异常

database_room:kaptStagingDebugKotlin FAILED
e: /Users/rossulbricht/projects/silkroad/database_room/build/tmp/kapt3/stubs/stagingDebug/org/dread/pirate/database_room/model/User.java:7: error: Entities and POJOs must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type).
public final class User {
             ^
  Tried the following constructors but they failed to match: …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-room

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

在Android上使用Camera API2进行基于触摸的焦点

我正在尝试使用cameraApi2在Android上实现基于触摸的焦点.它有点工作,但它似乎并不总是适合我.我的实现如下:

首先,我使用以下步骤创建Camera PreviewSession:

mPreviewRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_MODE_AUTO);
Run Code Online (Sandbox Code Playgroud)

然后我调用createCaptureSession并在其中调用

mCaptureSession.setRepeatingRequest( mPreviewRequestBuilder.build(), mCaptureCallback, mBackgroundHandler);
Run Code Online (Sandbox Code Playgroud)

我已经实现了OnTouch Listener来捕获屏幕的触摸区域并生成AF区域

    mPreviewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
    mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_AUTO);
    mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_REGIONS, meteringRectangleArr);

    mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), mCaptureCallback, mBackgroundHandler);
Run Code Online (Sandbox Code Playgroud)

在captureCallback中,我在onCaptureCompleted中执行以下步骤

  mPreviewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
  mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START);
  mCaptureSession.capture(mPreviewRequestBuilder.build(), null, mBackgroundHandler);


  mPreviewRequestBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
  mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_IDLE);
  mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), null, mBackgroundHandler);
Run Code Online (Sandbox Code Playgroud)

触摸后,相机焦点有时会起作用,有时预览会完全模糊.

java android cameraapi2

9
推荐指数
1
解决办法
536
查看次数

无法在EditText字段中发送sendKeys

我在执行特定EditText字段中的发送密钥时遇到问题。我尝试了一个肮脏的xpath和id,但是它仍然没有输入文本字段。但是我觉得找到元素没有问题。但是,它不会单击到元素中。

因此,应用程序中发生的事情是,当用户选择页面时,它会打开一个Web视图,并且该EditText字段位于其中WebView

这是我从鸦片检查员那里得到的肮脏的xpath:

/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.ScrollView/android.view.ViewGroup/android.view.ViewGroup/android.support.v4.view.ViewPager/android.view.ViewGroup/android.widget.EditText[1]
Run Code Online (Sandbox Code Playgroud)

这是不错的ID:

@FindBy(id = "test_number")
public WebElement testNumberTextField;
Run Code Online (Sandbox Code Playgroud)

我也尝试使用肮脏的xpath通过xpath使用find。

这是我尝试输入文本的方法。通过注释的代码,您可以看到我也尝试了其他方法来使其正常运行,但仍然没有成功:

    public void enterTestNumber(){
    //List<WebElement> menu22 =drive.getDriver().findElements(By.className("android.widget.EditText"));
   // menu22.get(1).sendKeys(randomStringGeneratorMethods.randomAlphaNumericString(7));
    testPage.testNumberTextField.sendKeys(randomStringGeneratorMethods.randomAlphaNumericString(7));
    //js.executeScript("document.getElementById('"+testPage.testNumberTextField+").value='"+randomStringGeneratorMethods.randomAlphaNumericString(7)+"';");
    }
Run Code Online (Sandbox Code Playgroud)

随机生成器只是一个随机字符串生成器,它是:

public String randomAlphaNumericString(int characterLength) {
    return RandomStringUtils.randomAlphanumeric(characterLength);
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何使它工作,以便可以在此EditText字段中键入文本?

java selenium android appium

9
推荐指数
1
解决办法
377
查看次数

如何在协调器布局中添加下拉刷新

我有一个AppBarRecyclerViewin CoordiantorLayout。SwipeToRefresh 必须全屏显示,但RecyclerView不能向下滚动。

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="128dp"/>

    </com.google.android.material.appbar.AppBarLayout>

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />


    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

类

如何在没有库的协调器布局中添加全屏下拉刷新。

android swiperefreshlayout android-recyclerview android-coordinatorlayout android-appbarlayout

9
推荐指数
3
解决办法
1550
查看次数

如何在不引发 org.threeten.bp.zone.ZoneRulesException 的情况下对使用 ZoneId.systemDefault 的代码进行单元测试

我有以下应用程序代码。

应用代码

public static long advanceByMax1HourWithoutOverflow(long currentTimeMillis) {
    ZoneId zoneId = ZoneId.systemDefault();

    ZonedDateTime zonedDateTime = Instant.ofEpochMilli(currentTimeMillis).atZone(zoneId);

    // 0-23
    int hour = zonedDateTime.getHour();

    if (hour < 23) {
        zonedDateTime = zonedDateTime.plusHours(1);
        return zonedDateTime.toInstant().toEpochMilli();
    }

    // 0-59
    int minute = zonedDateTime.getMinute();

    if (minute < 59) {
        zonedDateTime = zonedDateTime.plusMinutes(1);
        return zonedDateTime.toInstant().toEpochMilli();
    }

    return currentTimeMillis;
}
Run Code Online (Sandbox Code Playgroud)

我用以下内容为它编写了一个单元测试。

单元测试代码

@Test
public void advanceByMax1HourWithoutOverflow() {
    /*
    27 October 2018
    1540648800000 -> 1540652400000
    22:00 -> 23:00
    */
    long currentTimeMillis = 1540648800000L;
    long expected = 1540652400000L;
    long …
Run Code Online (Sandbox Code Playgroud)

java android unit-testing threetenbp

8
推荐指数
1
解决办法
1825
查看次数

WebView重置UiMode并打破黑暗主题

我们的应用程序依赖于让我们从和AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)中选取浅色和深色主题颜色values/colorsvalues-night/colors

但是每次我们尝试使用 时WebView,它都会从重置 UiMode 开始,并且我们的应用程序会混淆为我们的主题选择哪些颜色值

有些人在这里这里详细讨论了这个问题

有人遇到类似的问题吗?

android android-webview android-theme android-dark-theme

8
推荐指数
1
解决办法
4003
查看次数

Android:在DialogPreference摘要中支持%s扩展

第一个问题.很长一段时间的搜索者.

我通过扩展DialogPreference实现了timePicker首选项,就像在android文档中一样.一切正常,我可以通过onSharedPreferenceChanged()和DialogPreference onSetInitialValue()的覆盖来设置摘要.

我的目标是始终使用其值和来自资源的其他字符串显示摘要.
例如,在我的ListPreference中,我有:

android:summary="@string/pref_list_camera_summary"
Run Code Online (Sandbox Code Playgroud)

解析为:

<string name="pref_list_camera_summary">Use camera: %s</string>
Run Code Online (Sandbox Code Playgroud)

在我的timePreference%s不会扩展.我已经四处搜索,我无法弄清楚如何获得dialogPreference/timePreference来做到这一点.我可以在onSetInitalValue()中手动设置摘要,如下所示:

setSummary(getSummary() + " " + DateFormat.getTimeFormat(getContext()).format(new Date(calendar.getTimeInMillis())));
Run Code Online (Sandbox Code Playgroud)

我只是不喜欢这样的暗示扩张.感觉不干净或使用android%s范例.

我将开始挖掘listPreference代码,看看我如何将它添加到dialogPreference.任何想法/先发制人都会很棒!

谢谢!

java string android android-preferences dialog-preference

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

以编程方式将Android设备连接到Hotspot(没有互联网)切换回带有互联网的wifi

对不起我的英语不好.我正在编写一个代码来连接到另一个Android设备热点.它连接起来了.但是,在我的情况下,热点将没有互联网.现在连接的设备,切换回与互联网的另一个wifi网络.除了我的方式,有没有更好的方法连接到热点?我的代码如下:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);
    AppCompatButton btnConnect=findViewById(R.id.btnConnect);
    btnConnect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            registerReceiver(mWifiBroadcastReceiver , new IntentFilter("android.net.wifi.STATE_CHANGE"));
            EditText eSSID=findViewById(R.id.ssid);
            EditText ePassword=findViewById(R.id.password);
            String ssid = eSSID.getText().toString();
            String key = ePassword.getText().toString();
            WifiConfiguration wifiConfig = new WifiConfiguration();
            wifiConfig.SSID = String.format("\"%s\"" , ssid);
            wifiConfig.preSharedKey = String.format("\"%s\"" , key);
            connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);

            int netId = wifiManager.addNetwork(wifiConfig);
            wifiManager.disconnect();
            wifiManager.enableNetwork(netId , true);
            wifiManager.reconnect();
        }
    });


}
Run Code Online (Sandbox Code Playgroud)

接收器是:

  private BroadcastReceiver mWifiBroadcastReceiver = new BroadcastReceiver() { …
Run Code Online (Sandbox Code Playgroud)

android

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

视图的一部分在屏幕外时获取视图高度?

假设我有一个类似的视图结构

<ConstraintLayout>
    <CustomViewLayout>
        ...
        ...
    </CustomViewLayout>
</ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

这是简化的,但我在底部使用上面的内容,我有时ConstraintLayout根据我的CustomViewLayout身高改变底部的高度和底部的高度.我的问题是,如果部分CustomViewLayout被切断,那就是 - 它有点在屏幕之外,因为ConstraintLayout它不够高 - 我不再能够获得正确的"全高".在这种情况下,我总是只看到视图屏幕上的可见部分.

那么如何才能获得部分偏离屏幕的视图的全高?

谢谢!

编辑:

我应该补充一点,我尝试的是一个globalLayoutListener,以及一个customViewLayout.post {}(customViewLayout.height当然通常).但是当视图的一部分位于屏幕之外时,这些都不会测量整个高度.

java android android-view kotlin

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

如何创建像Clipboard Pro App这样的浮动窗口?

以下图片是应用https://play.google.com/store/apps/details?id=jp.snowlife01.android.clipboard的窗口.我把它命名为主窗口.

似乎主窗口不是普通窗口.它位于其他窗口的顶部,主窗口无法移动.

当我单击主窗口中的最小化按钮时,将显示一个小点图标,可以移动小点图标,单击小点图标时可以恢复主窗口.

我认为小点图标是一个SYSTEM_ALERT_WINDOW,但主窗口怎么样?

图片

在此输入图像描述

java android android-window

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