Articles of 安卓

如何使用Google Maps android API v2获取我的位置更改事件?

如何使用Google Maps android API v2获取我的位置更改事件? 在v1中,您可以执行下一步操作以处理位置更改事件: public class MyLocationOverlay extends com.google.android.maps.MyLocationOverlay { /** * Listener */ public interface Listener { void onLocationChanged(android.location.Location location); } private Listener listener; public MyLocationOverlay(Context context, MapView mapView, Listener listener) { super(context, mapView); this.listener = listener; } @Override public synchronized void onLocationChanged(Location location) { super.onLocationChanged(location); // fire listener if (listener != […]

配置`locale`variables已弃用 – Android

我使用此代码在多种语言应用程序中手动设置默认语言: public static void setLanguage(Context context, String languageCode){ Locale locale = new Locale(languageCode); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; // Deprecated !! context.getApplicationContext().getResources().updateConfiguration(config, context.getResources().getDisplayMetrics()); } 所以现在我们不能通过config.locale设置语言环境,因为该variables将在API 24中删除。 所以我看到替代方案是设置: config.setLocales(); 现场 在API级别1中添加 区域设置区域设置 此字段在API级别24中已弃用。请勿直接设置或读取此字段。 使用getLocales()和setLocales(LocaleList)。 如果只需要主要语言环境,则getLocales()。get(0)现在是首选访问者。 区域设置的当前用户首选项,对应于区域设置资源限定符。 我还注意到setLocale(Locale)也适用于api 17及以上版本 我检查了setLocales(LocalList)文档,它被标记为灰色,好像它也被弃用了! 那么什么可以解决这个问题!

无法在Android Studio中切换到调试版本变体

我已经切换到发布构建变体并配置了signingConfigs。 现在,当我尝试从下拉菜单中检查调试版本变体时,它立即切换回发布版本变体。 所以我无法再以调试模式运行我的应用程序了。 apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ apply plugin: ‘kotlin-kapt’ apply plugin: ‘realm-android’ android { signingConfigs { config { … } } compileSdkVersion rootProject.compileSdkVersion buildToolsVersion rootProject.buildToolsVersion defaultConfig { applicationId “com.kost.foo” minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion versionCode 2 versionName “1.1” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” ndk { abiFilters ‘armeabi-v7a’, ‘arm64-v8a’, ‘x86’, ‘x86_64’ } externalNativeBuild { […]

即时运行java.lang.OutOfMemoryError:超出GC开销限制

我已经升级到Android Studio 2.1,当我尝试构建和运行我的企业大项目时,我遇到了这个错误: 任务’:app:transformClassesWithDexForMyAppDebug’的执行失败。 com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:超出GC开销限制 我已经搜索了论坛并禁用了即时运行,也写入了我的build.gradle: dexOptions { incremental true javaMaxHeapSize “6g” } … dependencies{ compile ‘com.android.support:multidex:’ } 但它无法解决我的问题。 我在gradle中启用了multidex,因为没有它我得到了错误: com.android.dex.DexIndexOverflowException:方法ID不在[0,0xffff]中:65536 所以这是它的解决方案,它之前的Android Studio版本(也适用于公司的其他人,使用的是Android Studio 1.4-2.0),但是在我升级Android Studio之后却没有。 有谁知道什么可能导致问题? 有趣的是,如果我只是在制作项目时我没有得到错误,只有当我尝试运行它时。 任何想法都表示赞赏! 编辑1: 有趣的是,如果我重启我的android工作室,比第一次运行成功,但第二次运行没有。 编辑2: 如果我将堆大小设置为更大(比如8-10g),那么应用程序甚至不会在第一次运行时编译。 编辑3: 似乎问题是即时运行 ,如果我强迫android studio不使用它(比如一次部署到两个设备或更改gradle.properties,如答案)错误消失。

扩展类Android支持设计时出错

我想要做的是使用这里提到的新的android支持设计库: http : //android-developers.blogspot.com/2015/05/android-design-support-library.html 。 我试图在我的xml布局中使用如下的浮动操作按钮(这是以下错误来自的地方): 当我的应用程序启动时,这是错误: 06-06 20:56:43.186 6405-6405/com.nick.app E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.nick.app, PID: 6405 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nick.app/com.nick.app.MainActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class android.support.design.widget.FloatingActionButton at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2306) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2366) at android.app.ActivityThread.access$800(ActivityThread.java:149) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5290) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908) […]

如何确定路径是否为本地文件

只给出一个字符串的位置,是否有一种可靠的方法来确定这是一个本地文件(例如/mnt/sdcard/test.jpg)还是远程资源(例如http://img.androidcookie.com/java/ )? 用Uri.parse将它转换为Uri似乎没有给我任何东西来指示文件的位置。 我真的不想在字符串中查找//!

如何在android中实现文件上传进度条

我通过android中的org.apache.http.client.HttpClient上传文件,我需要实现进度条。 是否有可能从以下方面获取进展: HttpPost httppost = new HttpPost(“some path”); HttpClient httpclient = new DefaultHttpClient(); try { File file = new File(“file path”); InputStream in = new BufferedInputStream(new FileInputStream(file)); byte[] bArray = new byte[(int) file.length()]; in.read(bArray); String entity = Base64.encodeToString(bArray, Base64.DEFAULT); httppost.setEntity(new StringEntity(entity)); HttpResponse response = httpclient.execute(httppost); } 如果没有,请显示另一种方式。 谢谢

软键盘输入键事件句柄

我想在软键盘上做一些东西输入按键。 请参阅下面的代码和输出。 它执行两次,但我希望它只执行一次。 怎么解决? public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); txt = (EditText)findViewById(R.id.txt); txt.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { Log.e(“test”,”——— on enter”); return false; } return false; } }); }

Firebase Cloud Firestore:无效的集合引用。 集合引用必须具有奇数个段

我有以下代码并收到错误: Invalid collection reference. Collection references must have an odd number of segments 和代码: private void setAdapter() { FirebaseFirestore db = FirebaseFirestore.getInstance(); db.collection(“app/users/” + uid + “/notifications”).get().addOnCompleteListener(task -> { if (task.isSuccessful()) { for (DocumentSnapshot document : task.getResult()) { Log.d(“FragmentNotifications”, document.getId() + ” => ” + document.getData()); } } else { Log.w(“FragmentNotifications”, “Error getting notifications.”, task.getException()); […]

Android Studio中不存在工具> Android菜单

来自文档: 要运行AVD Manager,请执行以下操作之一: 在Android Studio中,选择工具> Android> AVD Manager 。 单击工具栏中的AVD Manager 。 这些都不存在。 我进入设置并find了未显示的AVD Manager菜单项,并为其分配了键盘快捷键,但它没有做任何事情。 网上的其他消息来源提到运行android avd来启动AVD Manager,但这已被弃用并删除。 ************************************************************************** The “android” command is deprecated. For manual SDK, AVD, and project management, please use Android Studio. For command-line tools, use tools\bin\sdkmanager.bat and tools\bin\avdmanager.bat ************************************************************************** Invalid or unsupported command “avd” 如何打开AVD Manager?