标签: commonsware-cwac

从IntentService获取位置时,在死线程上向Handler发送消息

即使手机没有醒来,我的应用也需要定期修复定位.为此,我使用IntentService和Commonsware慷慨提供的模式. https://github.com/commonsguy/cwac-wakeful

为了获得位置修复,我依赖于一个名为Fedor的成员提供的以下代码. 在Android上获取用户当前位置的最简单,最强大的方法是什么?.我稍微修改它以返回null而不是获取最后的已知位置

它们在没有组合时都能很好地工作:我可以在一个Activity中从Fedor的类中获得一个位置修复,我可以使用Commonsware类做一些基本的东西(比如记录一些东西).

当我试图从Commonsware的WakefulIntentService子类获取位置修复时,会出现问题.LocationListeners没有对locationUpdates做出反应,我得到了这些警告(我还没有得到线程,处理程序......的细微之处).有人可以帮我理解问题所在吗?谢谢,祝大家新年快乐:)

12-31 14:09:33.664: W/MessageQueue(3264): Handler (android.location.LocationManager$ListenerTransport$1) {41403330} sending message to a      Handler on a dead thread
12-31 14:09:33.664: W/MessageQueue(3264): java.lang.RuntimeException: Handler (android.location.LocationManager$ListenerTransport$1) {41403330} sending message to a Handler on a dead thread
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:196)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Handler.sendMessageAtTime(Handler.java:473)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Handler.sendMessageDelayed(Handler.java:446)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Handler.sendMessage(Handler.java:383)
12-31 14:09:33.664: W/MessageQueue(3264): at android.location.LocationManager$ListenerTransport.onLocationChanged(LocationManager.java:193)
12-31 14:09:33.664: W/MessageQueue(3264): at android.location.ILocationListener$Stub.onTransact(ILocationListener.java:58)
12-31 14:09:33.664: W/MessageQueue(3264): at android.os.Binder.execTransact(Binder.java:338)
12-31 14:09:33.664: W/MessageQueue(3264): at dalvik.system.NativeStart.run(Native Method)
Run Code Online (Sandbox Code Playgroud)

这是我的WakefulIntentService子类: …

android commonsware-cwac

35
推荐指数
3
解决办法
4万
查看次数

在Froyo上ListView随机IndexOutOfBoundsException

我有一个有大量下载的应用程序,我收到了很多这个错误:

 16783         AndroidRuntime  E  java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
 16783         AndroidRuntime  E    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
 16783         AndroidRuntime  E    at java.util.ArrayList.get(ArrayList.java:311)
 16783         AndroidRuntime  E    at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:16
                                  4)
 16783         AndroidRuntime  E    at android.widget.ListView.dispatchDrawWithExcessScroll_Default(ListView.java:3
                                  288)
 16783         AndroidRuntime  E    at android.widget.ListView.dispatchDraw(ListView.java:3029)
 16783         AndroidRuntime  E    at android.view.View.draw(View.java:6743)
 16783         AndroidRuntime  E    at android.widget.AbsListView.draw(AbsListView.java:2549)
 16783         AndroidRuntime  E    at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
 16783         AndroidRuntime  E    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
 16783         AndroidRuntime  E    at android.view.View.draw(View.java:6743)
 16783         AndroidRuntime  E    at android.view.ViewGroup.drawChild(ViewGroup.java:1640)
 16783         AndroidRuntime  E    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367)
 16783         AndroidRuntime  E    at android.view.ViewGroup.drawChild(ViewGroup.java:1638)
 16783         AndroidRuntime …
Run Code Online (Sandbox Code Playgroud)

java android listview indexoutofboundsexception commonsware-cwac

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

Loader:onLoadFinished只调用一次

我在一个活动中使用了一个加载器.我能够启动加载器并调用onLoadFinished.当我更新数据并onContentChanged在加载器中调用时,我看到loadInBackground并且deliverResult都被调用.这是小道似乎停止的地方.我没有收到任何回调onLoadFinished.

如果我重新创建活动(也就是方向更改或重新启动),那么它将以相同的方式运行.

我正在使用support-v4加载器和加载器管理器.

SharedPreferenceLoader基于CommonsWare的加载器:

public class SharedPreferencesLoader extends AsyncTaskLoader<SharedPreferences>
        implements SharedPreferences.OnSharedPreferenceChangeListener {
    private SharedPreferences prefs = null;

    private static final String TAG = SharedPreferencesLoader.class.getSimpleName();

    public SharedPreferencesLoader(Context context) {
        super(context);
    }

    @Override
    public SharedPreferences loadInBackground() {
        Log.v(TAG, "wol: load in background");
        prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
        prefs.registerOnSharedPreferenceChangeListener(this);

        return (prefs);
    }

    @Override
    protected void onStartLoading() {
        if (prefs != null) {
            deliverResult(prefs);
        }

        if (takeContentChanged() || prefs == null) {
            forceLoad();
        } …
Run Code Online (Sandbox Code Playgroud)

android android-loader android-support-library commonsware-cwac

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

合并多个RecyclerView.Adapter以与单个RecyclerView(Android)一起使用

我有一个json字符串,我分成4个数据集,每个数据集都有自己的RecyclerView.Adapter.

我想在每个适配器上使用StickyHeader在同一个RecyclerView中输出所有适配器.

我相信这可以通过CommonsWare的CWAC合并使用ListViews来完成(https://github.com/commonsguy/cwac-merge)

有关如何使用RecyclerView或应该如何使用RecyclerView的任何想法?我是一个不成熟的开发人员,所以响应越不抽象越好;-D

谢谢.

merge android adapter commonsware-cwac android-recyclerview

7
推荐指数
2
解决办法
3214
查看次数

Loader框架与普通的AsyncTask

在我的应用程序中,我需要很多CRUD东西:从本地SQLite数据库读取记录,插入对象和更新东西.大多数查询都非常简单,即使在UI线程上运行它们也不会阻塞,但是在这个应用程序中我想采用Windows Phone模式:一个out动画立即开始,动画在结果传递时开始动画.

我计划使用一个AsyncTask用于工作,但我注意到Honeycomb(和compat包)引入了这个新的Loader框架.主要优势似乎是Loader生存配置加载的数据发生了变化.该LoaderEx通过SQLite和框架之间的桥梁Commonsware项目,但有些问题出现.

  1. 资源清理:我使用单个活动,创建SQLiteOpenHelper onCreate()并关闭它onDestroy().由于加载程序管理器可能仍在运行,我检查它并pendingClose在我的回调对象上设置一个标志,因此它将在加载完成时关闭游标和帮助程序.我认为不关闭数据库是没有害处的,但SQLite抱怨如果你不这样做,我不喜欢错误消息:)这里的重点是数据不能在配置更改中存活,因此Loader优势消失

  2. 我应该创建多少个装载机?假设我有心爱的Customer人和Order桌子.装载机被认定ID就像CUST_LORD_L,但每次用户点击一些总结的时间我想与细节的屏幕带来.我应该restart是一个装有不同参数的装载机,还是应该init是一个带有随机ID的新装载机?这可能会发生几十次.Loader框架是针对许多小型运行的作业,还是仅针对一些长时间运行的任务?

  3. IDLoaderCallbacks界面内使用s 的目的是什么?为什么不简单initLoader(params, callback)?我不认为可以在回调中重用一些逻辑:最终他会分支(带ID if-elseswitchID),所以我不明白给回调对象赋予标识符的意义,而不是一个天真的方法-每次操作回调.

我问这个是因为整个框架似乎对我来说过于工程化而没有实际效用.我不明白用a集中代码的意义LoaderManager,我看不出任何新的机会AsyncTask没有提供.

唯一的胜利点是配置改变生存,但由于资源清理我无法利用它,我无法找出另一种方法来关闭SQLiteOpenHelper因为(很明显)SQLiteCursorLoader需要它但是清理它取决于用户.所以AsyncTask看起来似乎是赢家的选择,但也许我错过了一些东西.

sqlite android commonsware-cwac

5
推荐指数
1
解决办法
1330
查看次数

从FragmentPagerAdapter动态添加和删除片段

我有一个用于viewPager的FragmentPagerAdapter,它最初只有一个Fragment.我想在用户从右向左滑动时动态地向适配器添加一个新的Fragment,并在用户从左向右滑动时动态删除Fragment.我试图使用这个库https://github.com/commonsguy/cwac -pager但是在该库中我们可以选择在按钮点击上添加和删除片段.我试图将一个OnPageChangeListener添加到viewpager,但回调方法(onPageScrolled和onPageScrollStateChanged)被多次调用,这导致向FragmentPagerAdapter添加了多个片段.所以请详细说明如何做到这一点.

android android-viewpager fragmentpageradapter commonsware-cwac

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

通过MergeAdapter的强大功能,StickyListHeaders和ListViewAnimations结合起来我是队长Android

有没有人加入MergeAdapter,StickyListHeaders和ListViewAnimations安卓库?

我的需求是:

  • 一个垂直滚动视图中的多个ListView
  • 异质项目视图
  • 由标题分隔的多个列表项,应该是粘性的
  • 能够扩展一些列表项
  • 拖拽其中的一些
  • 支持android 14+

我的演员:

  • 依赖CursorAdapters

Cherrypick:

  • 有时我的顶部标题(这是单独的视图不属于我的列表,我宁愿保持这种方式)需要滑动到顶部; 我的组合列表应该遵循,但同时动画扩展它的高度,以便始终附加到底部.

提到的图书馆是:

如果有可能,请给我一些希望,以及如何避免陷阱的一些有用提示.也许我应该使用其他一些库.或者我只需要自己写一下:(

==== ==== EDITED

最后,我设法建立了我希望做的事情(2014年初).它是功能可扩展和可拖动的listview和适配器库,具有漂亮的动画(还没有粘性标头).回购:

由于RecyclerView现在可用,因此无需使用过于复杂的列表视图代码.这是快速切换指南 - http://andraskindler.com/2014/11/22/migrating-to-recyclerview/.

android listview drag-and-drop expandable commonsware-cwac

5
推荐指数
1
解决办法
1451
查看次数

Android中的相机预览质量很差

我在Android中制作了一个Camera应用程序,并使用以下函数来获取预览大小:

private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
    final double ASPECT_TOLERANCE = 0.1;
    double targetRatio = (double) w / h;
    if (sizes == null) return null;

    Size optimalSize = null;
    double minDiff = Double.MAX_VALUE;

    int targetHeight = h;

    // Try to find an size match aspect ratio and size
    for (Size size : sizes) {
        double ratio = (double) size.width / size.height;
        if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;
        if (Math.abs(size.height - targetHeight) < minDiff) {
            optimalSize = …
Run Code Online (Sandbox Code Playgroud)

camera android android-camera commonsware-cwac

5
推荐指数
1
解决办法
3884
查看次数

Android 相机在屏幕关闭时不会拍照

我有一个简单的应用程序,它有一个活动被警报管理器定期调用以显示预览帧并在构建预览帧时拍照。拍照后,它使用 a 保存AsyncTask,活动使用finish(). 当我打开屏幕时,代码工作得很好。但是它无法在屏幕关闭的情况下拍照。我想监视房子并使用该应用程序定期拍照,在这种情况下保持屏幕始终打开或打开它手动不是一个可行的选择。

此外,相机活动的代码已从Commonsware库中复制,效果非常好。我只是在关闭屏幕的情况下拍照时遇到问题。我还可以从日志中看到相机是由活动打开的。但是应该在构建预览帧时拍照的 Runnable 没有运行,而是相机进入暂停状态并停留在那里。

我已经完美设置了必要的权限,因为我能够在屏幕打开的情况下获取图像。也许当屏幕关闭并且有人可以在那里照亮时,我无法理解活动生命周期。

我尝试使用唤醒锁打开屏幕,但这没有任何好处。

下面是活动的代码。

另外我很抱歉,但删除许可证的评论以使其简短。

    package com.thopedia.snapper; /***
 Copyright (c) 2008-2012 CommonsWare, LLC
*/
import all;

public class CameraActivity1 extends Activity {
    private PreviewFrameLayout frame=null;
    private SurfaceView preview=null;
    private SurfaceHolder previewHolder=null;
    private Camera camera=null;
    private boolean inPreview=false;
    private boolean cameraConfigured=false;
    private  PowerManager.WakeLock wakeLock;
    private PowerManager powerManager;

    @SuppressWarnings("deprecation")
    @Override
    public void onCreate(Bundle savedInstanceState) {
       /* powerManager = (PowerManager) getSystemService(POWER_SERVICE);
        wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass()
                .getName());*/
        Log.v(GlobalVariables.TAG,"CameraActivity On create called");
        super.onCreate(savedInstanceState); …
Run Code Online (Sandbox Code Playgroud)

android android-camera android-activity commonsware-cwac

5
推荐指数
1
解决办法
2723
查看次数

Android 应用程序与存储在 Assets 文件夹中的预填充加密 SQLite 数据库一起使用

-使用Android-Room,我正在开发一个项目,在该项目中,我必须制作一个 Android 应用程序,其中包含存储在 Assets 文件夹中的预填充加密 SQLite 数据库

-在处理非加密数据库时,我设法使用此库从资产文件夹中复制数据库文件: https: //github.com/humazed/RoomAsset

-但是当向 Mix 添加加密时:

我意识到 Room 不提供任何加密支持,所以我必须使用这个库: https: //github.com/commonsguy/cwac-saferoom,当在运行时创建新数据库时它完美地工作。但当数据库已经加密并从应用程序的资产文件夹复制时,我无法使其工作

- 有没有办法使用这两个库来做到这一点?或者我的问题还有其他解决方案吗?

提前致谢 。

java sqlite android commonsware-cwac android-room

5
推荐指数
0
解决办法
323
查看次数