Articles of android

$ Proxy0.equals中的Android NullPointerException

我最近发布了一些基于libgdx Android游戏,他们都报告了一个错误,我不知道从哪里开始调试。 这是堆栈跟踪.- java.lang.NullPointerException: null result when primitive expected at $Proxy0.equals(Native Method) at com.google.android.gms.internal.dw$g.equals(Unknown Source) at java.util.ArrayList.contains(ArrayList.java:342) at com.google.android.gms.internal.dx.a(Unknown Source) at com.google.android.gms.internal.dw$hb(Unknown Source) at com.google.android.gms.internal.dw$hb(Unknown Source) at com.google.android.gms.internal.dw$b.bR(Unknown Source) at com.google.android.gms.internal.dw$a.handleMessage(Unknown Source) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3687) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) at dalvik.system.NativeStart.main(Native Method) 我知道这个问题与Google Play游戏服务有关,但无法弄清楚导致它的原因。 在这两种情况下,Android版本似乎是2.3.3 。 谁遇到同样的问题?

考虑到电池,Android在后台重复获取位置的最佳方式

我需要在我的应用程序中连续请求位置,它应该始终是后台服务。 我需要每两分钟左右拉一次。 我想过使用一个服务,在onStartCommand我会使用locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MINIMUM_TIME_INTERVAL, MINIMUM_DISTANCE, this); 以及locationmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MINIMUM_TIME_INTERVAL, MINIMUM_DISTANCE, this); 但我担心随着时间的推移,这个requestLocationUpdates会停止给我一个位置。 所以我想到使用AlarmManager所以它继续给我位置。 我的问题是,是否有必要使用AlarmManager提醒获取位置,或者如果我使用AlarmManager将耗尽大量电池。 我只是想知道在后台获取位置的最佳方法。 提前致谢。

Android测试,如何使用乐器模拟多点触控(放大/缩小)?

我可以简单地模拟单个触摸 – 在我的测试中点击,滑动,按住等,但完全坚持使用Android 2.2在HTСDesire上模拟多点触控。 你能告诉我,我怎样才能重现事件链来测试多点触摸? 我想我需要使用一些棘手的MotionEvent,如MASK或类似的东西,但不知道如何做到这一点。 我在这里发现了转载缩放事件的转储: http : //www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-3-understanding-touch- ?事件/ 1775 =标签mantle_skin;内容 1. event ACTION_DOWN[#0(pid 0)=135,179] 2. event ACTION_MOVE[#0(pid 0)=135,184] 3. event ACTION_MOVE[#0(pid 0)=144,205] 4. event ACTION_MOVE[#0(pid 0)=152,227] 5. event ACTION_POINTER_DOWN(pid 1)[#0(pid 0)=153,230;#1(pid 1)=380,538] 6. event ACTION_MOVE[#0(pid 0)=153,231;#1(pid 1)=380,538] 7. event ACTION_MOVE[#0(pid 0)=155,236;#1(pid 1)=364,512] 8. event ACTION_MOVE[#0(pid 0)=157,240;#1(pid 1)=350,498] 9. event ACTION_MOVE[#0(pid 0)=158,245;#1(pid 1)=343,494] […]

新行字符的模糊行为

我正在上传一个大字符串到web服务。 该字符串包含新行字符,写为“\ n”。 数据看起来像: 05/06/2012 11:35:43 AM- DB exists, transferring data\n05/06/2012 11:48:20 AM- loadUserSpinners, cursor.getCount()=2\n05/06/2012 11:48:20 AM- Battery: 50%\n05/06/2012 11:48:20 AM- ITEM SELECTED: 0 以上数据存储在字符串JsonArrObj 。 要上传数据/字符串,我使用以下代码: HttpParams httpParameters = new BasicHttpParams(); int timeoutConnection = 360000; //6 minutes HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); int timeoutSocket = 420000; //7 minutes HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); HttpClient httpClient = new DefaultHttpClient(httpParameters); JSONArray jsonParams […]

Android自动Google Play拒绝

由于以下原因,Google一直拒绝我的应用:“在审核期间,我们发现如果在插入Android Auto体验时设备上播放音频,则音乐将继续通过汽车扬声器播放而无需用户意图。我们将此视为司机分心,并不适合Android Auto应用程序。“ 我想我已经采取了相应的步骤来解决这个问题,请按照此处的文档进行操作: https : //developer.android.com/training/auto/audio/index.html#isconnected 然而,出于同样的原因,他们再次拒绝了我。 在我的MediaBrowserServiceCompat StreamService类中,我添加了以下代码: private IntentFilter androidAutoConnectionIntentFilter = new IntentFilter(“com.google.android.gms.car.media.STATUS”); private AndroidAutoConnectionStatusReceiver androidAutoConnectionStatusReceiver = new AndroidAutoConnectionStatusReceiver(); 在onCreate()中,我添加了: registerReceiver(androidAutoConnectionStatusReceiver, androidAutoConnectionIntentFilter); 并将此类添加到服务中: private class AndroidAutoConnectionStatusReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println(“*** ANDROID AUTO CONNECTED: ” + intent); String status = intent.getStringExtra(“media_connection_status”); boolean isConnectedToCar = “media_connected”.equals(status); […]

无法在客户端打开文件,在Android中尝试服务器端错误

我试图通过我的android程序通过URL播放youtubevideo。 我用过setVideoURI(uri); 函数也设置URI,正如stackoverflow中关于此的其他POST所建议的那样。 但我得到无法在客户端打开文件,尝试服务器端错误。 你能弄清楚我的代码有什么问题吗? 但我可以通过评论代码播放任何本地video。 这是我的android代码 – public class VideoActivity extends Activity { //MediaPlayer song= new MediaPlayer(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_video); VideoView videoView = (VideoView)this.findViewById(R.id.VVSimpleVideo); MediaController mc = new MediaController(this); mc.setAnchorView(videoView); mc.setMediaPlayer(videoView); videoView.setMediaController(mc); //String _path = “mnt/sdcard/Movies/MyCameraApp/video6.mp4”; String _path = “http://www.youtube.com/watch?v=E43mgXNl0xc”; Uri uri=Uri.parse(_path); videoView.setVideoURI(uri); //videoView.setVideoPath(_path); videoView.requestFocus(); videoView.start(); } @Override public […]

无法在4.1中的popup窗口中选择列表视图中的行但在android 5.0中工作

我的页面中有一个popup窗口,其中包含listview。 我已经在一个单独的xml中创建了popup窗口的设计,并在我的主页面上点击了一些按钮。 popup窗口具有列表视图,每行包含图像和文本视图。 我无法在android 4.1中的listview中获得行选择,但它在5.0中工作。 任何人都可以建议我的解决方案吗? 列表显示: Listview项目: 添加行单击列表器: lstSiteMenu = (ListView) popupView.findViewById(R.id.lstSites); adapter = new MenuItemsAdapter(SiteActivity.this, arrMenu); // Attach the adapter to a ListView lstSiteMenu.setAdapter(adapter); lstSiteMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, final int position, long id) { }

GoogleAuthUtil与iOS设备身份validation类似,可validation请求是否来自Apple设备

Google Auth Util可让Android开发人员validation其服务器收到的请求来自Android设备。 设备会根据与设备关联的Google帐户从Google获取令牌,然后设备的请求会随该令牌一起发送到服务器,然后服务器会询问Google是否有效。 任何密钥都不在应用程序源之外,因此恶意用户无法破解应用程序并访问私钥和软件请求到服务器。 我已经看了一段时间,似乎苹果公司没有提供这样的东西,但我希望有一些function相似的function,我可以用于iOS。

Android L的RecyclerView面临的挑战

我一直在玩RecyclerView一点点。 有什么简单的方法可以在RecyclerView为项目添加OnClickListener吗? 我试过在ViewHolder实现它。 onClick事件永远不会被触发。 我已经使用notifyItemInserted(position)将新值添加到RecyclerView 。 用户界面不会自动刷新。 需要上下拉动才能刷新。 但是当我调用notifyDatasetChanged(..) ,它没问题。 我已将DefaultItemAnimator应用于RecyclerView 。 但是,添加新项目时没有看到任何animation。 感谢提前任何想法。 这是我测试过的第一个Android L组件,我正在那里。 这是我的Adapter类: public class AdapterRecyclerView extends RecyclerView.Adapter { private List arrExperiences; //Provide a reference to the type of views that you are using – Custom ViewHolder public class MyViewHolder extends RecyclerView.ViewHolder { public TextView tvExperienceTitle; public TextView tvExperienceDesc; public MyViewHolder(RelativeLayout […]

WorkManager如何安排对REST API的GET请求?

我已经看过WorkManager的codelab以及这里的一些例子,但是我看到的代码中的所有内容都与在设备上本地工作或上传到服务器有关,而不是下载数据和响应收到的数据。 在开发人员指南中,它甚至说,“例如,应用程序可能需要不时地从网络上下载新资源”,所以我认为这对于这项任务来说是完美的。 我的问题是,如果WorkManager可以处理以下场景,如果没有,那么处理它的正确工具是什么: 安排一天在后台运行一次的工作 工作是从REST API执行数据提取(如果可能,将其发布到LiveData对象)。 数据返回时,检查它是否比本地数据更新。 通知用户新数据可用。 我的worker类看起来像这样: public class MyWorker extends Worker { @NonNull @Override public WorkerResult doWork() { lookForNewData(); return WorkerResult.SUCCESS; } public void lookForNewData() { MutableLiveData liveData = new MutableLiveData(); liveData.observe(lifeCycleOwner, results -> { notifyOnNewData(results); }) APILayer.getInstance().fetchData(searchParams, liveData) } 我的问题当然是LiveData对象无法观察,因为没有活动或片段可以作为其LifecycleOwner。 但即使我使用来自API的回调来响应到达的数据,我的工作人员已经发布它已成功并且它可能不会继续进行回调,对吧? 所以我知道这种方法是完全错误的,但我看不到任何使用WorkManager获取数据的代码 请帮助一个正确的解决方案和一些示例代码或一些链接,如果它可以处理这种工作或其他更合适的话,可以使用WorkManager。