Articles of java

Android上的AES解密太慢,无法使用。 NDK会更快吗? 其他想法?

我使用内置的Cipher类在Android上实现了AES / CTR。 对于我的目的来说,解密看起来太慢了,128KB的块在仿真器上需要大约6秒的时间解密,而在三星Galaxy硬件上则需要2.6秒。 我想知道是否使用NDK构buildOpenSSL并调用其方法会更快。 有人对这个有经验么? 我的一部分人想要相信Cipher(“AES / CTR / NoPadding”)方法只是围绕原生OpenSSL调用的一个包装,因为支持Android的Linux操作系统应该安装libcrypto。 如果是这种情况,那么试图使用NDK将只是浪费时间,因为没有预期的性能增益。 我还没有在iOS上花费这么多时间,但即使是3G硬件解密速度如此之快,以至于10MB解密对于最终用户来说似乎是瞬间的。 我发现很难相信,Android的实施是真正的严重程度,但也许这就是现实。 如果这真的是我所面对的,有没有人有任何其他的实施策略的想法,为最终用户提供不可察觉的响应(10Mb文件)? 我办公室里的另一位开发人员用一种tongue suggested的方式build议我只是使用XORencryption,这使我想要面对自己,但是我认为(安全问题抛在一边),如果我这样做,它会工作。 谢谢! 这里有一些简单的代码供参考: public class ResourceDecryptor { private static ThreadLocal<Cipher> mCipher; private byte[] mIV = new byte[ 8 ]; private SecretKeySpec mKey; private String mResourcePath; private static final int kAESBlockSize = 16; public ResourceDecryptor( String resourcePath, String decryptionKey ) […]

SimpleDateFormat:不可parsing的dateexception

看了几个现有的post后,我仍然无法让我的SimpleDateFormat分析器工作。 这里是代码: SimpleDateFormat df = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss Z", Locale.US); try { volcanoListDate = df.parse(currentValue); } catch (ParseException e) { Log.d("DEBUG", e.toString()); Log.d("DEBUG", currentValue); } 我总是以ParseException结束。 以下是debugging消息的输出: 06-09 23:52:17.478:DEBUG / DEBUG(2436):java.text.ParseException:Unparseable date: 06-09 23:52:17.478:DEBUG / DEBUG(2436):Wed,08 Jun 2011 03:23:55 -0500 区域设置ist设置和模式看起来不错。 我错在哪里?

Android的ORMLite示例不能编译

我一直在尝试通过ORA说的HelloAndroid的例子,但一直无法成功编译。 我遇到了DatabaseHelper类的问题。 特别是getDao()方法: /** * Returns the Database Access Object (DAO) for our SimpleData class. * It will create it or return the cached value. */ public Dao<SimpleData, Integer> getDao() throws SQLException { if (simpleDao == null) { simpleDao = getDao(SimpleData.class); } return simpleDao; } 这是我收到的编译时错误: D的types参数不能确定; typesvariablesD的上限没有唯一的最大实例com.j256.ormlite.dao.Dao,com.j256.ormlite.dao.Dao

检查Android中的UI元素

Web开发中最强大的工具之一是webkit / firebug中的检查元素function,可以让你检查DOM中的项目。 Android(非networking)开发是否有任何等价物? 我一直在寻找MonkeyRunner,但我不知道它有一种方式来描述正在运行的应用程序。

我想使用提供路线的地图制作Android应用,但不能使用Google地图

我想制作一个Android应用程序,加载我在build筑物内部创build的地图。 我希望它提供一个房间之间的方向。 如果可能,在楼层之间。 我希望地图可以缩放,也可以点击。 即你可以点击你所在的位置,以及你想去的地方,应用程序将提供方向。 或者你在文本框中input你所在的房间,你想去的地方,然后再提供方向。 我偶然发现了一些让你使用开源地图的东西,并将你自己的节点添加到每个angular落或参考地。 但经过一小时的Googlesearch,我再也找不到这个网站了。 有没有人有任何想法我可以做到这一点?

Android最终variables

我正在阅读的TextView的源代码,我遇到了这个代码片段: RectF mTmpRectF = new RectF(); float[] mTmpOffset = new float[2]; ExtractedTextRequest mExtracting; final ExtractedText mTmpExtracted = new ExtractedText(); 所以,他们在那里将mTmpExtracted定义为final,而不是mTmpRectF。 我已经读过这个“最终”如果你把它放在一个variables之前做什么? 哪里有分析何时使用final。 因此,既然这两个对象(mTmpRectF&mTmpExtracted)在这个特定情况下可能是最终的,那么是否还有其他原因(即,性能等),只有一个被设置为final或者只是一个开发者代码风格? 谢谢!

multithreading的好习惯

我有一个应用程序,当一个“游戏”统计,它启动了几个不同的线程。 我开始这样的线程: Thread thread = new Thread(new Runnable() { public void run() { //… } }); thread.setName("killMeAtEnd"); thread.start(); 后来当游戏结束时,我在游戏中有一个dispose()方法,通过所有正在运行的线程进行sorting,并结束所有名称为“killMeAtEnd”的线程。 我的问题是,这是好的做法吗? 我的意图是保持我的应用程序运行速度快,杂乱无章,以我的经验,留下“悬挂”的线程往往会放慢手机,直到应用程序终止。 有一个更好的方法吗? 这是否值得困扰? 编辑: 如果有人有兴趣,这是我的dispose() 。 这个代码在类游戏中。 public void dispose() { Thread threads[] = (Thread[])Thread.getAllStackTraces().keySet().toArray(); for(int x=0;x<threads.length;x++) { Thread thread = threads[x]; if(thread.getName().equalsIgnoreCase(KILL)) { try { thread.interrupt(); }catch(Exception e){Log.e(Viewer.GAME,Log.getStackTraceString(e));} thread = null; } } } […]

如何将16位PCMaudio字节数组转换为双精度浮点数组?

我正试图对.3gppaudio文件执行快速傅立叶变换。 该文件包含从手机麦克风44100kHz的小5秒录音。 我能find的每个Java FFTalgorithm都只需要double [],float []或Complex []input,原因很明显,但我正在以字节数组的forms读取audio文件,所以我有点困惑我从哪里去。 我能find的唯一的东西就是对上一个问题的回答: AndroidaudioFFT使用audiorecord检索特定的频率大小 但我不确定这是否是正确的程序。 任何有见识的人?

使用ZXing对byte 进行编码和解码

我正在开发一个Android应用程序,我需要编码和解码ZXing应用程序生成的QRCode中的字节数组。 我的问题是,我的消息解码不完全匹配生成的字节数组。 我试图创build一个QRCode基于一个字节数组包含增量索引,即 input = [0, 1, 2, …, 124, 125, 126, 127, -128, -127,… -3, -2, -1, 0, 1, 2, …] 在QRCode中对消息进行编码并在响应方进行解码之后,获得以下字节数组输出: output = [0, 1, 2, …, 124, 125, 126, 127, 63, 63,… 63, 63, 63, 0, 1, 2, …] 所有“负”字节值都转换为ASCII字符63:'?' 问号字符。 我认为编码字符集有问题,但是由于我使用ISO-8859-1,所有人都声称自己是这类问题的解决scheme( 其他主题在 这里 处理同样types的问题 )看看我的错误在哪里,或者如果我在编码或解码实例期间跳过了一步。 这里是我执行的编码给定的字节数组的代码: String text = ""; byte[] […]

通知一旦服务结束就消失

我有一个服务,刮伤数据的网站,然后在必要时给用户一个通知。 我遇到的问题是,服务closures(可能是即刻),通知消失。 下面的代码是应用程序所有的通知代码。 我没有放置任何代码来取消通知。 public static void CreateNotificationCompat(int notificationID, String link, String title, String text, Context ctx) { Intent notificationIntent = new Intent("android.intent.action.VIEW", Uri.parse(link)); PendingIntent contentIntent = PendingIntent.getActivity(ctx.getApplicationContext(), 0, notificationIntent, 0); NotificationManager nm = (NotificationManager) ctx .getSystemService(Context.NOTIFICATION_SERVICE); NotificationCompat.Builder builder = new NotificationCompat.Builder(ctx); Resources res = ctx.getResources(); builder.setContentIntent(contentIntent) .setSmallIcon(R.drawable.notify_icon) .setWhen(System.currentTimeMillis()) .setContentTitle(title) .setContentText(text) .setAutoCancel(false); Notification n = […]