小编Hit*_*sit的帖子

内容提供商的小部件; 不可能使用ReadPermission?

所以我刚为我的应用程序实现了一个小部件.它通过我的数据从数据库中获取数据ContentProvider.我在清单中定义了自己的读/写权限,说明我使用它们(似乎没有什么区别),并在内容提供程序中要求它们:

<!-- Define my permissions for the provider -->
<permission
    android:name="com.nononsenseapps.notepad.permissions.read"
    android:description="@string/permission_read_desc"
    android:label="@string/permission_read_label"
    android:permissionGroup="android.permission-group.PERSONAL_INFO"
    android:protectionLevel="normal" />
<permission
    android:name="com.nononsenseapps.notepad.permissions.write"
    android:description="@string/permission_write_desc"
    android:label="@string/permission_write_label"
    android:permissionGroup="android.permission-group.PERSONAL_INFO"
    android:protectionLevel="normal" />
......
<uses-permission android:name="com.nononsenseapps.notepad.permissions.read" />
<uses-permission android:name="com.nononsenseapps.notepad.permissions.write" />
<uses-permission android:name="android.permission.BIND_REMOTEVIEWS" />
......
<provider
        android:name=".NotePadProvider"
        android:authorities="com.nononsenseapps.NotePad"
        android:enabled="true"
        android:exported="true"
        android:label="@string/app_name"
        android:readPermission="com.nononsenseapps.notepad.permissions.read"
        android:syncable="true"
        android:writePermission="com.nononsenseapps.notepad.permissions.write" >
        <grant-uri-permission android:pathPattern=".*" />
    </provider>
Run Code Online (Sandbox Code Playgroud)

我通过a更新我的小部件Service(根据小部件教程):

    <!-- List Widget -->
    <receiver android:name="com.nononsenseapps.notepad.widget.ListWidgetProvider" >
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
        </intent-filter>

        <meta-data
            android:name="android.appwidget.provider"
            android:resource="@xml/listwidgetinfo" />
    </receiver>

    <service
        android:name="com.nononsenseapps.notepad.widget.ListWidgetService"
        android:exported="false"
        android:permission="android.permission.BIND_REMOTEVIEWS" />
Run Code Online (Sandbox Code Playgroud)

而这Service反过来做到这一点(包括一堆代码):

/**
 * …
Run Code Online (Sandbox Code Playgroud)

android android-widget android-contentprovider

18
推荐指数
1
解决办法
3637
查看次数

Android画廊与捏缩放

我找到了一个带缩放缩放图库示例项目,并修复了一些错误.你可以在这里下载我的代码

它仅支持全屏.它始终将图像置于屏幕高度中心.但我想将标题视图放在屏幕顶部并调整图像的位置.图像位置应为:

header height + (screen height - header height) / 2
Run Code Online (Sandbox Code Playgroud)

我不太擅长使用Matrix.任何人都知道如何使自定义图库可以在任何尺寸(不仅仅是全屏)工作?

java android zoom gallery pinchzoom

17
推荐指数
1
解决办法
4312
查看次数

Android上长期运行服务的最佳架构

我将非常感谢有关如何处理操作系统查杀长期服务的一些指导.

业务场景:

应用程序记录BTT轨道,可能持续数小时.它还可以在地图上显示轨道以及相关统计数据.

应用程序用户界面使用户能够开始/停止跟踪记录并在地图上查看实时跟踪.

在开始跟踪记录之后,用户可以退出应用程序并关闭屏幕(以节省电量),并且只有服务将保持运行以保持记录更新到数据库(显示通知),直到用户再次启动活动并要求停止记录,这导致服务终止.

问题:

在可变时间(从40分钟到1个半小时)之后,录制服务在没有任何警告的情况下被杀死.由于BTT出场可能需要几个小时,这导致跟踪录音不完整.

一些其他信息:

服务以启动START_STICKY并获取PARTIAL_WAKE_LOCK,并在与主活动相同的过程中运行.

以用户定义的速率从1秒到几分钟获取(并记录)新位置.我从Android文档中了解到,这是长期运行服务的预期操作系统行为.

题:

拥有性能良好的应用程序以满足业务场景要求的最佳架构设计方法是什么?

我可以想到几个选项(我不喜欢它们中的任何一个),但我希望某人如何面对并解决类似问题的指导:

  • 使用广播接收器(理想情况下,如果可能,连接到位置管理器)使服务仅在获取新位置时运行?
  • 不要让用户离开主要活动(导致用户体验下降)?
  • 如果需要,让警报广播接收器重新启动服务吗?

感谢所有能够就此主题分享一些智慧的人.

service android android-service android-lifecycle

17
推荐指数
1
解决办法
3976
查看次数

如何在Android中使用FFMPEG库播放视频?

我能够ffmpeg使用摇滚播放器构建脚本构建库.

现在我有这个.so文件,我该如何播放视频?我希望LinearLayout在我的小视频中显示这个视频Activity.

可能吗?

更新:我知道使用VideoViewMediaPlayer+ 播放视频很容易SurfaceView.我只想更多地了解ffmpeg库以及如何在Android中显示帧Activity.

video java-native-interface android ffmpeg frame

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

带有lockCanvas()的Android TextureView硬件加速

我正试图用我的画布使用Android的硬件加速.我曾经有过一个SurfaceViewlockCanvas()用来获得画布的画面,我稍后会画画,但我改变了,TextureView因为我无法SurfaceView使用硬件加速.我目前正试图让这个画布使用硬件加速.

Canvas canvas = this.lockCanvas();
System.out.println(this.isHardwareAccelerated() + ", " + canvas.isHardwareAccelerated());
Run Code Online (Sandbox Code Playgroud)

给我输出:true,false(this是a TextureView)

有谁知道为什么canvas不是硬件加速,以及如何做到这一点?

编辑:据我所知,似乎我必须使用OpenGL.但是,我仍然想知道是否有任何宣布的计划可以为这样的画布提供硬件加速.

java android hardware-acceleration android-canvas

16
推荐指数
2
解决办法
5488
查看次数

在mpandroidchart的x轴上实现连续的日期时间标签

我们在一年中的不同日期收集数据点,并希望在图表中显示它们 - 显示日期的x轴.

现在我们创建一个长度为364的数组,每个数组包含相应日期的值.但是,我们希望x轴不显示一年中的某一天,而是显示年,月或日,具体取决于使用随缩放手势变化的比例.

当查看整年的数据时,轴应该显示jan - feb ... - nov - dec但是当插入(从而导致轴重新缩放)时仅显示feb .. mar和月份的个别日期.

这可能吗?


为了改善这个问题 - 一些图片:假设我们从显示年份的图表开始: 例1

现在我们放大x轴来改变比例 - x轴标记应该再次改变并描绘几个月的几天,最后描绘所有日子: 例题

datetime android axis-labels mpandroidchart

15
推荐指数
1
解决办法
1440
查看次数

Honeycomb Loaders可以解决AsyncTask + UI更新的问题吗?

在后台执行某些操作然后更新UI很难在Android中正确实现.它设计得很糟糕.典型的例子是AsyncTask,它从Web获取内容并显示结果.这有两个问题:

  1. AsyncTask引用了Activity(因为它需要更新其UI).屏幕方向更改后,重新启动活动.但是AsyncTask仍然引用旧的被破坏的Activity,因此无法更新新Activity的UI.

  2. 这可能导致OutOfMemoryException.想象一下,你有一个包含大量位图的Activity,并启动一些AsyncTask.您按BACK(活动已完成)但AsyncTask仍在运行,并且因为它引用了Activity,所以带有位图的Activity仍在内存中.重复此操作(开始活动和返回),你的力量迟早会关闭.

这可以解决,但它太复杂了.在一个Activity中,我有3个不同的AsyncTasks,每个都可以同时在多个实例中运行.正确实现这一点令人沮丧.代码变得非常难以理解和调试.

Honeycomb Loaders可以解决这个问题吗?有没有办法在pre-Honeycomb Android版本中使用它们?

android android-3.0-honeycomb android-loader

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

如何使用android.intent.category过滤猴子要测试的特定活动?

我正在尝试使用猴子练习工具来强调测试我的Android应用程序.

默认情况下,该工具将执行具有类别Intent.CATEGORY_LAUNCHERIntent.CATEGORY_MONKEY根据文档的活动.

package="my.android" 

    <activity android:name=".activities.MyApp">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>        
    <activity android:name=".activities.MyScreen">
        <intent-filter>
            <category android:name="android.intent.category.MONKEY"/>
        </intent-filter>
    </activity>
    <activity android:name=".activities.MySettings"/>
Run Code Online (Sandbox Code Playgroud)

我不想让 Monkey设置MySettings.

在我的实际情况中,这是因为该活动进行了注销.因此,在注销后,无法登录以便继续测试其余的屏幕,这是测试的全部概念.

./adb shell monkey -p my.android -v 500
:Monkey: seed=0 count=500
:AllowPackage: my.android
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
..
    // Allowing start of Intent { cmp=my.android/.activities.MySettings} in package my.android
..
Run Code Online (Sandbox Code Playgroud)

它应该拒绝而不是允许我猜.任何想法如何避免猴子进入我不想要的活动?

android monkey android-intent android-monkey

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

如何在android中获取资产文件夹的文件路径

我有一个Android应用程序用于将.png图像从Android应用程序的资产文件夹传输到我的本地服务器.我需要获取资产文件夹中的图像路径,请参阅下面的代码,

String stringPath = "android.resource//"+getPackageName()+"/raw/sample/logout.png";             
File f = new File(stringPath);
Run Code Online (Sandbox Code Playgroud)

如果我使用上面的代码,我得到"文件未找到异常".那么如何在资产文件夹中获取图像路径?

android android-assets

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

Android服务onCreate被多次调用而不调用onDestroy

在我的应用程序中,我使用服务与我们的服务器进行通信.该服务生成多个消息队列线程来处理具有不同优先级的任务.

这个模型已经使用了大约一年没有大问题.但是,最近,我发现onCreate我的服务类被多次调用了一段时间.onDestroy从不在两次onCreate通话之间调用.因此,我没有机会杀死现有的线程.一旦发生此行为,服务内部就会出现重复的线程.

我唯一改变的是运行服务,因为前台服务是用户登录应用程序.我想知道前台服务是否会导致问题.

有任何想法吗?

service android oncreate ondestroy

12
推荐指数
2
解决办法
7779
查看次数