Tag: android

请使用“首次离线aproach”解释android架构。

我的应用程序架构,很常见: 例如,如果我有实体列表,请解释我 @Entity(tableName = TABLE_NAME) class Item constructor( @PrimaryKey(autoGenerate = false) var id: Long = 0L, @TypeConverters(ListToStringConverter::class) var eventDescription: List = emptyList(), @TypeConverters(DateConverter::class) var date: Date = Date(), var rate: Int ?= null) 图片说明: 目前我做(根据上图): 来自Repository的mLiveData getLiveData 回调refreshFromDataBase() DataBase的mLiveData.addSource的LiveData – 导致Android View快速更新的原因 回调refreshFromNetwork() rest更新DatabaseTable 数据库插入导致LiveData添加将更改推送到视图 问题的提出 5步的最佳做法是什么?一旦有新数据出现,我必须用最新的数据取代旧数据? 目前我正在使用RxJava,Room,Kotlin和我在步骤3中使用嵌套的Rx.Single这是非常丑陋的代码。 喜欢 disposable = usecase.getDataFromNetwork() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeBy(onSuccess […]

在MapBox Android中检测完整的运动结束

我期待在MapBox的Android SDK中检测地图的完整动作结束。 完成我的意思是没有更多的用户交互(触摸)和相机移动(触摸移动或飞行惯性)。 由于在SDK中没有这种回调OnTouchListener ,所以我在MapView , OnTouchListener和OnMapChangedListener上组合了两个监听器(在Kotlin中很清楚): mapView.setOnTouchListener { _, event -> when (event.actionMasked) { MotionEvent.ACTION_DOWN -> { listener?.onMapDragBegin() } MotionEvent.ACTION_UP -> { listener?.onMapDragEnd() } } false } mapView.addOnMapChangedListener { c -> when (c) { MapView.REGION_WILL_CHANGE, MapView.REGION_WILL_CHANGE_ANIMATED -> { listener?.onMapMovementBegin() } MapView.REGION_DID_CHANGE, MapView.REGION_DID_CHANGE_ANIMATED -> { listener?.onMapMovementEnd() } } } 听众等待两个事件结束。 除了一个小细节之外,这个工作很好:抛出时,当用户停止触摸屏幕时发送两个结束事件,并且只有在调用REGION_WILL_CHANGE_ANIMATED地图更改之后。 所以有一段时间我不知道地图是否还在移动。 在日志中看起来像这样: 19:23:42.431: Map […]

DataBinding(库必须使用完全相同的版本规范)

摇篮: buildscript { ext.kotlin_version = ‘1.2.10’ repositories { google() jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:3.0.1’ classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } ========================= ext { support_version = ‘27.0.2’ dagger_version = ‘2.14.1’ } dependencies { implementation fileTree(dir: ‘libs’, include: [‘*.jar’]) //kotlin implementation “org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version” //support implementation “com.android.support:appcompat-v7:$support_version” implementation ‘com.android.support.constraint:constraint-layout:1.0.2’ //rx implementation ‘io.reactivex.rxjava2:rxjava:2.1.8’ implementation ‘io.reactivex.rxjava2:rxandroid:2.0.1’ //test testImplementation ‘junit:junit:4.12’ androidTestImplementation ‘com.android.support.test:runner:1.0.1’ androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.1’ […]

一些绘图不能被发现

在我添加了更多的矢量绘图之后,我注意到以前的一些绘图并不工作(大约11)。 与其他人一样,我没有任何问题 – 他们正确地显示。 我将Java类中的每个drawable与image.setImageResource(R.drawable.path_to_image); 而且大多数都没有任何问题。 我只有几个这样的问题。 运行一个应用程序,并试图显示这些drawable我得到这样的错误: Unable to find resource: 2131099763 android.content.res.Resources$NotFoundException: Drawable com.example.example_app:drawable/f_user_achievements_learning1h with resource ID #0x7f060073 Caused by: android.content.res.Resources$NotFoundException: File res/drawable/f_user_achievements_learning1h.xml from drawable resource ID #0x7f060073 at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:725) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at android.content.res.Resources.getDrawable(Resources.java:767) at android.content.Context.getDrawable(Context.java:525) at android.widget.ImageView.resolveUri(ImageView.java:840) at android.widget.ImageView.onMeasure(ImageView.java:982) at android.view.View.measure(View.java:19734) at android.widget.TableRow.measureChildBeforeLayout(TableRow.java:222) at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1117) at android.widget.TableRow.onMeasure(TableRow.java:113) at android.view.View.measure(View.java:19734) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6120) at […]

准备好使用Android Studio离线安装说明

我是Android开发新手。 我想安装Android工作室,但是我的家里没有互联网连接,但是我的手机上已经有了,所以我可以从手机上下载文件并将其传输到我的电脑,然后安装。 但问题是,当我从Android工作室网站下载Android工作室捆绑3.0(Android工作室),当我运行它显示错误gradle项目同步失败我搜索它,但我不能得到任何解决方案我试图设置环境variables“ Java选项“也试图设置离线工作,并在我的电脑上安装最新的Gradle文件,但我仍然不能让我的Android工作室正常运行,所以我需要帮助,我准备好重新安装Android Studio如有必要。 你不应该说我已经阅读了所有关于离线安装和gradle错误的相关问题,但没有用于我,所以请不要垃圾邮件我的问题。 如果你能帮助我,请告诉我,因为我需要Android工作室学习Android编程也Kotlin支持,所以你的帮助将不胜感激。

如何在应用程序关闭时启动服务

我想在应用程序关闭时启动服务。 java代码 public class AudioRecorder extends Service { public static final String SENDER_ID = “274211616343”; @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { Toast.makeText(this, ” MyService Created “, Toast.LENGTH_LONG).show(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Toast.makeText(this, ” MyService Started”, Toast.LENGTH_LONG).show(); return START_STICKY; } […]

listFiles(),但忽略Android中的一个子目录

我需要得到一个文件列表,但忽略一个特定的子目录。 例如这里是一个示例结构。 Content ->1 –>file_a.mp4 –>file_b.mp4 ->2 –>file_c.mp4 –>file_d.mp4 ->Bonus –>1 —>file_e.mp4 —>file_f.mp4 我需要能够获得排除奖励目录的文件/目录列表。 我还需要单独列出奖励目录的文件,但我认为这可以通过使用常规方法轻松解决。 如何执行列表文件,但忽略目录? 这是我的示例代码将返回一切 final List boxsets = getCloudBoxsetsWithTrackData(context); final File[] boxsetFiles = dir.listFiles(); if (boxsetFiles != null) { for (File subDir : boxsetFiles) { if (subDir.isDirectory()) { for (Boxset boxset : boxsets) { if (subDir.getName().equalsIgnoreCase(String.valueOf(boxset.persistentId))) { DBHandler.getInstance(context).moveBoxsetToDeviceList(boxset); DownloadLibrarian.getInstance(context).stopDownload(boxset); } } } […]

如何检查ContentProvider可用于Intent(或阻止特定的一个)

我使用Intent机制让用户通过标准的方式选择图像 val intent = Intent(Intent.ACTION_GET_CONTENT) intent.type = “image/*” intent.addCategory(Intent.CATEGORY_OPENABLE) ctx.startActivityForResult(intent, RequestCodes.SelectPhoto) 然后我将Uri传递给另一个活动,可能会裁剪照片。 我需要之前的Uri做一些预先检查。 在Android模拟器上,像Photos(默认)这样的默认提供程序会让我的整个应用程序有权打开Uri,而不仅仅是请求活动。 然而,在亚洲有一个“奇怪”的提供者, com.miui.gallery.provider.GalleryOpenProvider并没有 – 在com.miui.gallery.provider.GalleryOpenProvider器中发生了一个邪恶的SecurityException。 所以我尝试使用ACTION_OPEN_DOCUMENT,根据规范说,它会给我的整个应用程序权限,直到设备重新启动,但不幸的是,一个不支持在模拟器云中的谷歌照片。 所以我正在寻找一种方法来确定是否将列表中的com.miui.gallery.provider.GalleryOpenProvider在com.miui.gallery.provider.GalleryOpenProvider ,如果是这样,要么阻止它,否则回落到使用ACTION_OPEN_DOCUMENT。 我希望避免在把Uri交给收割机之前将其拷贝,作物活动无论如何都将其视为只读。 这是启动作物(kotlin)的全部function。 CropActivity是对旧版开源图库应用com.android.gallery3d的修改。 private fun startCrop(ctx: Activity, uri: Uri) { val intent = Intent(ctx, CropActivity::class.java) intent.data = uri val file = this.createImageFile(ctx, “photofinal”) if (file == null) { this.showStorageUnavailable(ctx) return } val outputUri = […]

根据宽度放置GridLayout的子项

我有一个GridLayout,他们的孩子有相同的固定大小。 我想让孩子们适应可用的宽度: 在一个例子中: || | @1 @2 @3 @4 | | @5 | 在另一个: | @1 @2 | | @3 @4 | | @5 | auto_fit像一个GridView与auto_fit启用。 (但我不能使用GridView的原因,请不要建议。) 为此,我想知道可用宽度后,计算列的数量并设置每个子的LayoutParams(即行列索引)。 现在,在父片段的onCreateView中,GridLayout的宽度还不可用。 所以我设置了numColumns ,添加孩子,让他们自动定位,然后我想重新定位孩子。 我发现的最合理的地方是在布局更改侦听器( gridLayout.addOnLayoutChangeListener )中执行此操作,因为此时GridLayout的宽度是可用的。 但是,当我改变孩子的布局参数,然后调用gridLayout.requestLayout (1)时,没有任何反应(即孩子仍然具有onCreateView之后的相同位置)。 我也试图在每个子setLayoutParams (2)上调用setLayoutParams ,但是会产生requestLayout从布局监听器被错误地调用的警告,而且这些子requestLayout仍然没有被重新定位。 这里的代码(在Kotlin,但我希望很可读): gridLayout.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom -> val width = […]

Android的AltBeacon测距没有find任何东西

我正在使用这里提供的标准示例,除非我修改它来记录,如果没有发现确保它实际上被调用。 @Override public void onBeaconServiceConnect() { beaconManager.addRangeNotifier(new RangeNotifier() { @Override public void didRangeBeaconsInRegion(Collection beacons, Region region) { if (beacons.size() == 0) { Log.i(“ActivityMain”, “no beacons found”); } if (beacons.size() > 0) { Log.i(“ActivityMain”, “The first beacon I see is about ” + beacons.iterator().next().getDistance() + ” meters away.”); } } }); try { beaconManager.startRangingBeaconsInRegion(new Region(“myRangingUniqueId”, null, […]