我很可能正在开展一个项目,现有的Desfire卡(用于访问付费服务)将被支持NFC的移动设备取代.任何人都可以向我指出任何资源,以帮助我了解a)将Desfire卡的数据复制到移动设备上所涉及的内容,以便它可以代替卡,以及b)让应用程序提供NFC数据以便呈现给读者好像是卡片.所有相关的密钥和访问权限都将由发卡机构提供(如果项目继续进行),但我很想提前了解该流程.
我还需要了解Android NFC API如何支持Desfire,因为据我所知它只能正确支持Classic.http://developer.android.com/reference/android/nfc/tech/package-summary.html
我正在使用一个REST API,它返回一个JSON文档,该文档以如下方式开始,并包含一个带有字符串ID(如"ABC")的项目的"集合".注意"routes"字段,它包含一系列名为"ABC","ABD","ABE"等的字段,但是路由在json中没有表示为数组,所以所有这些
{
"status":true,
"page":1,
"per_page":500,
"total_count":1234,
"total_pages":8,
"total_on_page":500,
"routes":{
"ABC":[
{
"value":22313,
<......>
Run Code Online (Sandbox Code Playgroud)
我正在使用Retrofit,问题是routes字段不是一个数组(尽管事实上它确实是这样)并且Retrofit/Gson要求我为具有字段变量abc,abd等的路由创建一个模型对象 - 这不是实际的数据变化.由于各种原因,更改服务器API很难,所以我希望在Android客户端上解决这个问题.
我认为这些是选项:
在它到达Gson之前拦截JSON文档并调整文档,可能使用自定义的Gson解析器,或者拦截HTTP响应.
绕过JSON解析,并从Retrofit获取JSON文档(我还没弄清楚如何执行此操作,或者是否可以)
使用我不知道的Retrofit的一些功能将字段名称映射到集合.
我很感激帮助,特别是如果有一种快速简便的方法来解决这个问题.
这是概念上的场景(不包括linearlayouts)
ScrollView
Button
Checkboxes
Spinner
ListView (full-size, non-scrolling)
AdMob advert
Run Code Online (Sandbox Code Playgroud)
即滚动窗格,其顶部有过滤UI,后跟结果,但广告必须始终保持可见,向下滚动过滤器UI必须滚动,留出最大的结果空间.
我知道ScrollView中的ListView存在问题,但对我而言,它在很多方面都运行良好(我正在修复ListView的长度以阻止它崩溃).因此屏幕滚动得很好,广告保持在底部,看起来不错.
但是我看到的问题莫名其妙地,当活动打开时,ScrollView向下滚动了一下,因此ListView位于屏幕的顶部.我假设这是一个默认行为,所以我开始尝试强制ScrollView的滚动位置到顶部,但我尝试了各种方法,并看不到任何效果:
scrollview.scrollTo(0, 1000/-1000);
scrollview.smoothScrollBy(0, 1000/-1000);
scrollview.fullScroll(View.FOCUS_UP);
Run Code Online (Sandbox Code Playgroud)
有没有办法强制ScrollView从顶部的滚动位置开始?
如果没有,我怎么能有一个不滚动底部的广告,但是一个总是滚动到顶部的过滤器UI?使用ListView似乎有些过分,因为我不需要滚动,但它确实提供了许多好处,所以最好避免从头开始并自己渲染所有内容.
我想有两种选择:
构建一个并行的ANT脚本并绕过IDE(当IDE非常好时,效率非常低)
以某种方式将Proguard/yGuard或类似功能与IntelliJ集成
我已经尝试将Proguard/yGuard的插件安装到IntelliJ中,但似乎都没有工作(安装好,但不会出现在Facets下),实际上我并不是100%肯定这些插件会帮我混淆或者是否只是提供用于调试的去混淆工具.
我认为ANT是最好的路线,但会很感激你的想法.我只想要一种方法来减少某人对应用程序进行逆向工程的机会,但不需要花费数小时来设置它.
总行数在10k到100k行范围内.我可以在force.com上使用RAND()吗?不幸的是,尽管所有行都有唯一的数字标识符,但仍有许多空白,我常常想从过滤后的子集中选择一个随机行.
我怀疑没有特别有效的方法来做到这一点,但它有可能吗?
最终,我想做的就是随机从表中(或基于特定过滤条件的子集)中提取一行.
如果force.com不允许我选择一个随机行,那么我可以查询要选择的行,并为所有行分配顺序ID,比如1-1,035,然后在本地选择该范围内的随机数,比如说349,然后得到第349行?
我正在设计一个服务,它将包含一个基于云的数据库(具有用于管理数据的UI),然后是一个面向最终用户的移动应用程序,用于向需要它的人显示数据(主要是只读) .最终用户将是匿名的.
云数据库/应用服务器需要提供:
一个可靠,可扩展,基于云的数据库
一个不错的简单API,REST,理想情况下是一个Android SDK
Web上用于管理数据的UI(包括跨表创建表单)
明智的定价,但不是免费的
我的选择包括Google App Engine,Microsoft Azure,托管Couchdb,Salesforce即将推出的database.com和Amazon SimpleDB.但我的第三个要求是基于网络的内部数据管理表格,这是最大的障碍.
Database.com(或更具体地说是force.com产品)使得创建在线表单以运行报告以及添加和编辑数据非常容易.但Salesforce在处理背后很痛苦,而且database.com定价看起来很昂贵.
人们建议我自己编写一个用于数据编辑和管理的UI,是的,我可以,但这是很多工作(特别是因为我不知道Azure,Python等),我更愿意付出这些努力进入应用程序,这是我的客户将使用.今年我是Android的新手,所以让我的双手充分学习一个平台.
一种选择是让我使用force.com来管理数据,然后将其复制到API调用进入的其他地方,也许是两个世界中最好的.
哪种选择最适合我的需求?我确信在寻找一个不错的后端服务来支持移动应用程序时,我并不孤单.
google-app-engine android salesforce amazon-simpledb azure-sql-database
我用XML创建了一个AnimationDrawable,它工作正常.但是在将drawable移动到MapView作为叠加标记(替换一个工作正常的静态drawable)时,动画固执地拒绝播放.我已将调用start()移动到一个按钮进行测试,即使在MapView显示几秒后按下,动画也无法启动.我在logcat中什么也看不到.我知道start()需要在所有窗口设置完成后调用,但这似乎是一个单独的问题.
AnimationDrawables与MapView兼容吗?
有什么特别的东西需要我在MapView中做一个工作吗?
你有没有成功地在MapView中完成一项工作?
使用Matt的解决方案(下面)我通过将ImageView放在MapView的图层中而不是使用叠加来添加AnimationDrawable.
public void showAnimatedMarker(GeoPoint point) {
LinearLayout v = (LinearLayout) View.inflate(context, R.layout.markerlayout, null);
ImageView marker = (ImageView) v.findViewById(R.id.marker);
AnimationDrawable markerImage = (AnimationDrawable)marker.getDrawable();
this.addView(v, 0, new MapView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, point, MapView.LayoutParams.BOTTOM_CENTER));
markerImage.start();
}
Run Code Online (Sandbox Code Playgroud)
然后是markerlayout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/marker"
android:src="@drawable/my_animation_drawable"
/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) 杰克沃顿在最近的一次演讲中提到了这个图书馆,它看起来是一个很好的方法来避免一大堆样板,所以我试了一下.但没有任何成功. https://github.com/SimonVT/schematic
下面是附加了注释的内容提供程序的定义以及清单提供程序元素.问题是Android Studio不喜欢提供程序定义,因为内容提供程序类不扩展ContentProvider.
Caused by: java.lang.ClassCastException: com.myapp.SchematicContentProvider
cannot be cast to android.content.ContentProvider
Run Code Online (Sandbox Code Playgroud)
我错过了什么?它可能与我没有使用的android-apt有关(Schematic推荐它但似乎并不需要它) - 当我尝试使用android-apt时,我得到一个VerifyError,所以不得不从构建中删除它.
AndroidManifest.xml中
<provider
android:name="com.myapp.SchematicContentProvider"
android:authorities="com.myapp.provider"
android:exported="false" />
Run Code Online (Sandbox Code Playgroud)
和类定义:
import net.simonvt.schematic.annotation.ContentProvider;
import net.simonvt.schematic.annotation.ContentUri;
import net.simonvt.schematic.annotation.TableEndpoint;
@ContentProvider(authority = SchematicContentProvider.AUTHORITY, database = SchematicDatabase.class)
public class SchematicContentProvider {
public static final String AUTHORITY = "com.myapp.provider";
interface Path {
String ROUTES = "routes";
}
@TableEndpoint(table = SchematicDatabase.ROUTES) public static class Routes {
@ContentUri(path = Path.ROUTES, type = "vnd.android.cursor.dir/list", defaultSort = SchematicRouteColumns.TITLE + " ASC")
public static final Uri ROUTES = …Run Code Online (Sandbox Code Playgroud) 您将如何实现如下示例的列表,其中RecyclerView中的项目之间的边界线是一个角度.
我现在的计划是采取每个项目的最顶部三角形部分并将其渲染到上面的项目中,因此视觉上项目看起来像边界是倾斜的,但实际上它们保持水平.然后,该项目可以根据点击在项目中的位置来处理项目选择.但有更好的方法吗?
编辑:考虑到我意识到我不知道如何将图像裁剪为三角形,所以任何指针也是非常有用的.
Android Lint将此代码示例中的字符串常量用作“ dWQGSCDx”上的拼写错误。根据文档,我应该使用@SupressLint(“ Typos”)来抑制它,但那没有实现。我看到其他人建议使用@SuppressWarnings,但这也不起作用。
/**
* Constants.kt
*/
import android.annotation.SuppressLint
@SuppressLint("Typos")
@SuppressWarnings("SpellCheckingInspection")
const val SOME_STRING_VALUE = "...dWQGSCDx..."
Run Code Online (Sandbox Code Playgroud)
请注意,这是一个文件作用域的全局常量,它不在类内部,因此不能在包含的类上放置注释。
如何在不完全禁用拼写检查且没有在字典中添加“拼写错误”文本的情况下抑制此常量定义的拼写检查?
android ×9
salesforce ×2
android-lint ×1
android-maps ×1
force.com ×1
gson ×1
json ×1
kotlin ×1
mifare ×1
nfc ×1
obfuscation ×1
proguard ×1
retrofit ×1
soql ×1