小编Nou*_*vay的帖子

有没有理由不使用lombok与android studio

有谁知道有任何理由不使用lombok与Android工作室?我有60个字段和许多重要方法的POJO.我宁愿不使用访问器丢弃文件.我的选择是将字段声明为public或使用lombok.我知道如何设置它(如何在android studio中设置编译库.LOMBOK).但我不想发布我的应用程序然后发现它不能用于某些Android设备只是因为lombok.我正在再次编写API-14编码.谢谢.现在我正在编译API-23,并将继续编译最新的.

java android lombok

8
推荐指数
1
解决办法
489
查看次数

如果方向改变,相机不会覆盖旧图像

我有一个带有许多不同ViewHolders的RecyclerView适配器.其中一个ViewHolders包含一个ImageView,它需要能够拍照,调整大小,然后显示它.对于模块化,我希望ViewHolder是自包含的:它而不是父活动应该处理有关照片拍摄和显示过程的所有内容.文件路径也是常量(它永远不会改变).事实上,它是/storage/emulated/0/com.company.app/myst/cat.jpg.因此,这是我对ImageView onClick方法的实现.

@Override
public void onClick(View v) {
    final FragmentManager fm = ((MyActivity) getContext()).getSupportFragmentManager();
    Fragment auxiliary = new Fragment() {
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            resizeResaveAndDisplayPhoto();
            super.onActivityResult(requestCode, resultCode, data);
            fm.beginTransaction().remove(this).commit();
        }
    };
    fm.beginTransaction().add(auxiliary, "FRAGMENT_TAG").commit();
    fm.executePendingTransactions();

    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (null != takePictureIntent.resolveActivity(view.getContext().getPackageManager())) {
        ((MyActivity)view.getContext()).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
         auxFragment.startActivityForResult(takePictureIntent, Constants.REQUEST_CODE_PHOTO);
    }
}
Run Code Online (Sandbox Code Playgroud)

resizeResaveAndDisplayPhoto把它叫做执行以下的AsyncTask

public static class ResizeThenLoadImageTask extends AsyncTask<String, Void, Bitmap> {

    private final WeakReference<ImageView> imageViewWeakReference;
    private final WeakReference<File> fileWeakReference; …
Run Code Online (Sandbox Code Playgroud)

filesystems camera android android-asynctask

8
推荐指数
1
解决办法
80
查看次数

在Android上,总是调用onStopJob吗?

我正在尝试实施我的第一个JobService。我知道onStartJob实际上可以保证可以致电(是的,如果我指定了一些离谱的要求而没有到期时间,则有一些优势)。但是onStopJob呢?可以保证被调用吗?

具体来说,我有一项工作将在后台执行。但是我有办法知道工作何时完成(例如sharedPrefs)。我希望依靠何时调用onStopJob将通知发送给用户该工作已完成。

注意:onStopJob是发送通知的便捷位置,因为我已经在检查作业是否完成,以了解是否应该重试。

ps需要考虑的事情可能会有所帮助(我也在考虑):如果我onStartJob返回true,那么系统如何知道我的作业何时停止运行(除非调用)onStopJob

android job-scheduling android-jobscheduler

6
推荐指数
2
解决办法
3703
查看次数

更改 sqlite 表以在多列上添加唯一约束

我有一个由 sqlite 表支持的 ContentProvider。所以为了创建我的表,我使用了

\n\n
public class H extends SQLiteOpenHelper {\n  @Override\n  public void onCreate(SQLiteDatabase sqliteDatabase) {\n    \xe2\x80\xa6// here I defined my original table without constraints\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

最初创建时,该表具有以下列:姓名、年龄、身高。没有限制。没有什么。

\n\n

现在我需要向表添加约束。所以我增加了 DATABASE_VERSION,然后在 onCreate String 中添加了UNIQUE(name,age) ON CONFLICT REPLACE。\n我的问题是,我应该在方法内部做什么onUpgrade?更简单地说:我如何调用ALTER TABLE仅添加约束?我的尝试失败了

\n\n
ALTER TABLE myTable ADD UNIQUE(name,age) ON CONFLICT REPLACE\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是错误消息:

\n\n
Caused by: android.database.sqlite.SQLiteException: near "CONSTRAINT": syntax error (code 1): , while compiling: ALTER TABLE myTable ADD CONSTRAINT UNIQUE(name,age) ON CONFLICT REPLACE\n#################################################################\nError Code : …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-contentprovider android-sqlite

6
推荐指数
1
解决办法
5249
查看次数

如何提高CameraManager拍摄的照片质量

比较很简单:我用自定义相机拍照,使用CameraManager.然后我用默认的Galaxy Note 5相机拍摄相同的照片.可用于CameraManager的最大尺寸是3264 by 1836我使用它并将三星相机设置为相同的分辨率.结果

  • 注5:我可以看到照片中的细节
  • CameraManager:我看不到细节.图像质量低.

然后我尝试设置CameraManager照片

 captureBuilder.set(CaptureRequest.JPEG_QUALITY, (byte) 100);
Run Code Online (Sandbox Code Playgroud)

仍然没有变化.只有一个变化:使用CameraManager拍摄的照片的文件大小变为2.3MB(以前为0.5MB),而三星照片的尺寸(剩余)为1.6MB.因此,即使尺寸较大,使用CameraManager拍摄的照片质量仍然较低.我可以解决这个问题的任何想法:如何使用CameraManager拍摄的照片与使用Note 5附带的默认相机应用程序拍摄的照片质量相同?

android android-camera

6
推荐指数
1
解决办法
973
查看次数

RuntimeTypeAdapterFactory 说“类型”未定义

我正在处理一种情况,我需要反序列化多态类。

\n\n
Class Pen{\n  String name;\n  List<Animal> animals;\n}\n\n//Animal can be an interface or parent class: I am flexible\n\nClass Animal{\n  AnimalType type;//enum\n  int legs;\n}\n\nenum AnimalType{\n  dog,cat,pig,chicken;\n}\n\nClass AnimalDog extends Animal{\n  //\xe2\x80\xa6\n}\n\nClass AnimalCat extends Animal{\n  //\xe2\x80\xa6\n}\n\n\nClass AnimalPig extends Animal{\n  //\xe2\x80\xa6\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我创建我的 Gson 实例

\n\n
public static Gson instanceUpperCamelCaseWithTypeAdapterFactory() {\n    if (null == sGsonUpperCamelCase) {\n        final RuntimeTypeAdapterFactory<Animal> typeFactory = RuntimeTypeAdapterFactory\n                .of(Animal.class, \xe2\x80\x9ctype")\n                .registerSubtype(AnimalDog.class, \xe2\x80\x9cdog\xe2\x80\x9d)\n                .registerSubtype(AnimalCat.class, \xe2\x80\x9ccat\xe2\x80\x9d)\n                .registerSubtype(AnimalPig.class, \xe2\x80\x9cpig\xe2\x80\x9d);\n\n        sGsonUpperCamelCase = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)\n                .registerTypeAdapterFactory(typeFactory).create();\n    }//the naming policy is because server sends me upper case …
Run Code Online (Sandbox Code Playgroud)

java android gson

5
推荐指数
2
解决办法
3170
查看次数

在javadoc中为每个单元格添加带边框的表格

我知道我可以在Java文档中使用html标签.如何为每个单元格添加带边框的表格?我希望细胞像真正的桌子一样对齐.我知道基本的标签

<table>
  <tr>
    <td> cell 11 </td> <td> cell 21</td>
  </tr>
  <tr>
    <td> cell 12 </td> <td> cell 22</td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

那么如何添加边框并保持表格列的宽度相同?

java javadoc

5
推荐指数
1
解决办法
7087
查看次数

三种产品口味:两种非常相似,一种较小但不同

现在我在gradle中有两个productFlavors.我需要添加第三个.现有的两种产品风味几乎包含所有内容.称他们为猫和狗 - 他们都是动物.我需要添加的第三种风格实际上是应用程序的沙盒版本.我们可以称之为自行车.

说我的应用现在有十二项活动,全部由Cat和Dog共享.但是自行车产品的味道应该只能访问其中三个活动和自行车需要拥有它自己的启动器活动.如何重构我的代码以智能地适应这种情况?同样,两种口味几乎分享所有东西,而一种口味与其他两种口味相比要少得多.

UPDATE

似乎有一种聪明的方法可以使用更改默认源设置配置来解决此问题.基本上,我会保留/mainsourceSet以用于整个应用程序中常见的所有内容; 一个/dogCat为所有sourceSet是常见的两种狗和猫; 和一个/bike仅属于Bike 的sourceSet.

在弄清楚了这么多之后,我仍然在编写gradle sourceSets部分时遇到一些问题

android {
  ...
  sourceSets {
    . . . 
  }
}
Run Code Online (Sandbox Code Playgroud)

android gradle android-studio

5
推荐指数
1
解决办法
497
查看次数

appcompat-v7:25.2.0与播放服务冲突:10.2.1

我正在开发一个新的应用程序。目前,我正在尝试添加依赖项

compile 'com.google.android.gms:play-services:10.2.1'
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到了gradle编译错误,原因是compile 'com.android.support:appcompat-v7:25.2.0'

所有com.android.support库都必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本25.2.0、24.0.0。示例包括com.android.support:animated-vector-drawable:25.2.0和com.android.support:mediarouter-v7:24.0.0少...(?F1)有一些库,工具和库的组合,它们不兼容,或可能导致错误。一种不兼容的情况是使用不是最新版本(或特别是低于targetSdkVersion的版本)的Android支持库版本进行编译。

有什么想法可以最好地解决这个问题吗?

摇篮文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "appIdhere"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        resValue "string", "authority", "${applicationId}"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    provided "org.projectlombok:lombok:1.16.8"
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.android.support:design:25.2.0'
    compile 'com.android.support:recyclerview-v7:25.2.0'
    compile 'com.android.support:cardview-v7:25.2.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:support-v4:25.2.0'
    compile …
Run Code Online (Sandbox Code Playgroud)

android gradle android-support-library google-play-services

5
推荐指数
2
解决办法
6090
查看次数

SnackBar 点击关闭

我需要创建一个 SnackBar,要求用户单击以关闭。我怎么做?以下不会编译,我不想让 SnackBar 变量成为一个字段。

final Snackbar snack = Snackbar.make(findViewById(R.id.notAvailable),
                "You don't have this feature",
                Snackbar.LENGTH_INDEFINITE)
                .setAction("OK", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                snack.dismiss();
            }
        });
        snack.show();
Run Code Online (Sandbox Code Playgroud)

android android-layout android-snackbar

4
推荐指数
1
解决办法
5732
查看次数