Articles of java

Android操作系统中使用SSLSocket的TLS连接速度较慢

我正在开发一个使用SSLSocket连接到服务器的Android应用程序。 这是我正在使用的代码: // Connect if (socket == null || socket.isClosed() || !socket.isConnected()) { if (socket != null && !socket.isClosed()) socket.close(); Log.i(getClass().toString(), "Connecting…"); if (sslContext == null) { sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, trustAllCerts, new SecureRandom()); } SSLSocketFactory socketFactory = sslContext.getSocketFactory(); socket = (SSLSocket)socketFactory.createSocket(host, port); socket.setSoTimeout(20000); socket.setUseClientMode(true); connected = true; Log.i(getClass().toString(), "Connected."); } // Secure if (connected) […]

如何访问com.android.internal.telephony.CallManager?

我想从com.android.internal.telephony包访问CallManager类对象。 这是我的代码: ClassLoader classLoader = TestActivity.class.getClassLoader(); final ClassLoader classLoader = this.getClass().getClassLoader(); try { final Class<?> classCallManager = classLoader.loadClass("com.android.internal.telephony.CallManager"); Log.i("TestActivity", classCallManager); } catch (final ClassNotFoundException e) { Log.e("TestActivity", e); } 不幸的是,这是抛出一个ClassNotFoundException 。 同样的方法允许我访问PhoneFactory ,但显然我不允许访问CallManager 。 如果我能够到达课堂,那么我想要继续使用课程,如下所示: Method method_getInstance; method_getInstance = classCallManager.getDeclaredMethod("getInstance"); method_getInstance.setAccessible(true); Object callManagerInstance = method_getInstance.invoke(null); 谁可以帮我这个事? 提前致谢, Harsha C.

Java手机编译器

我做了一些Googlesearch,但没有发现太多的信息,所以我在这里问这里, 有没有人知道基于电话的Java或C / C ++编译器,所以开发人员可以有效地使用他的手机来做一些初步的开发工作(或者只是在无聊的时候玩弄:))

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; } } } […]