【问题标题】:Check if Android device has search hardware button检查Android设备是否有搜索硬件按钮
【发布时间】:2011-11-08 08:27:32
【问题描述】:

我需要帮助确定如何检查设备是否配备了搜索硬件按钮。这可能吗?

编辑:我说的是找出设备是否有搜索硬件按钮。简单的问题。每个安卓设备都有一组硬件按钮;菜单、主页按钮、返回按钮和搜索按钮。但有些设备只配备了其中的一部分,而不是全部。

编辑 2:我问的原因是,如果设备 没有配备硬件按钮,我希望在我的 UI 中显示一个软件按钮。我在我的活动中使用searchable 接口。我没有遵循 EditText / TextField 方法。

【问题讨论】:

  • 如果我没说错的话,你告诉我设备搜索硬件按钮或一些图形视图按钮?
  • 我认为这是 Android 设备的要求。
  • 并非所有设备都配备硬件按钮。新的 Galaxy Tab 10.1 没有我之前提到的任何按钮。
  • 为了检查硬件菜单。你可以使用 ViewConfiguration.get(Splashy.this).hasPermanentMenuKey();但它需要最低 Api 14,但无法帮助搜索按钮

标签: android search hardware


【解决方案1】:

我认为您不需要检测它是否真的有搜索硬件按钮。该框架将为您提供帮助(不过,我确信一旦冰淇淋三明治发布,此过程将得到简化)

目前,唯一没有硬件搜索功能的设备是 Honeycomb 平板电脑。因此,通过使用android:targetSdkVersion="11"(或更高版本),将implements OnQueryTextListener 添加到您的FragmentActivity,然后添加如下内容:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.notebooks_menu, menu);
    final SearchView sv = new SearchView(getActivity());
    sv.setOnQueryTextListener(this);
    menu.findItem(R.id.search_notebooks).setActionView(sv);
}

您将基本上解决问题。现在,要使其在预 Honeycomb 设备上运行,您可能需要使用 compatibility library,或在代码中使用反射或其他一些保护措施。

编辑

三星 Galaxy S II 没有专门的硬件搜索按钮,但如果您按住菜单按钮几秒钟,它将开始充当硬件搜索按钮。 p>

【讨论】:

  • 您说得对,蜂巢平板电脑没有搜索硬件按钮。新的三星 Galaxy SII 也没有。我认为看到公司在他们的设备上做出自己的改变是很可悲的。这使得支持所有 Android 设备变得更具挑战性。 Galaxy 10.1 甚至有一个我觉得奇怪的专用屏幕截图按钮。最好的解决方案可能是实现一个包含您提到的搜索按钮的菜单,这当然适用于所有设备,至少那些配备菜单按钮的设备(我认为所有 Android 设备都有)。感谢您的意见。
  • 请看我关于 SGS2 的菜单按钮变成搜索的编辑。我同意当硬件制造商推出这样的东西时,它不是很好(但你不能真的责怪他们尝试创新),因为它至少打破了用户和开发人员的期望。
  • 谢谢乔恩。顺便说一句,我认为 SearchView 不附带支持库。所以我们需要在旧的 SDK 中使用默认的搜索对话框。这里是documentation
【解决方案2】:

你可以通过两种方式更好地使用签名

  1. 点击搜索按钮,拨打onSearchRequested();

  2. 点击editText的第二种方法放android:imeOptions="actionSearch"所以你需要
    检查密钥

    searchBox.setOnEditorActionListener(new OnEditorActionListener()
    {
        public boolean onEditorAction(TextView textView, int id,KeyEvent event) 
        {
        if (id == EditorInfo.IME_ACTION_SEARCH)
            {
                 //do what ever you want
            }
        return true;
        }
    });
    

希望这会对你有所帮助。

【讨论】:

  • 我不是在问如何激活搜索字段。我在问我们如何才能确定设备是否配备了硬件搜索功能。这个想法很简单。如果设备没有硬件搜索按钮,我必须显示一个软件按钮。如果它确实有硬件按钮,我将不会显示软件按钮。这是我的计划。
  • 我对答案投了反对票,因为它不能很好地证明问题和所需解决方案的合理性
猜你喜欢
  • 1970-01-01
  • 2011-11-10
  • 2012-02-21
  • 2016-08-31
  • 2011-12-20
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多