不幸的是,当我尝试将一些图像从Android设备上传到数据库时,我遇到了一些问题.图像位于文件夹中.此文件夹包含图像以及其他内容.我不知道图像的名称,我只需要上传图像(jpg).在我上传图像之前,我需要使用base64对它们进行编码.
首先,我从文件夹中获取jpg文件.然后我从图像名称中获取ID.之后我通过base64编码:
Button upload = (Button) findViewById(R.id.upload);
upload.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
String path = Environment.getExternalStorageDirectory().getPath();
File dir = new File(path);
File[] files = dir.listFiles();
for (int i = 0; i < files.length; ++i) {
if (files[i].getName().endsWith(".jpg")) {
pics = new File(String.valueOf(files[i]));
id = String.valueOf(files[i]);
String sub = id.substring(id.lastIndexOf("/") + 1);
int index = sub.indexOf("_");
String book;
if (index >= 0) {
book = sub.substring(0, index);
ID = book;
Log.e("ID", ID);
}
Bitmap imagex = BitmapFactory.decodeFile(pics.getAbsolutePath());
ByteArrayOutputStream …Run Code Online (Sandbox Code Playgroud) 我ctypes在Python中使用它来打开一个用C++编写的文件.
我的C++代码:
extern "C" {
void openfile(const char *filename) {
cout<<"File to open for writing = " <<filename<<endl;
FILE *fp = fopen(filename,"w");
fprintf(fp,"writing into file");
fclose(fp);
}
}
Run Code Online (Sandbox Code Playgroud)
我的Python代码:
>>> import ctypes
>>> lib = ctypes.cdll.LoadLibrary('/in/vrtime/mahesh/blue/rnd/software/test/test.so')
>>> outfile = "myfirstfile.txt"
>>> lib.openfile(outfile)
File to open for writing = m
Run Code Online (Sandbox Code Playgroud)
我得到的文件名是m,这是char我文件的第一个字符.
如何将整个字符串传递给C端?
我正在尝试为上下文编写一个kotlin扩展函数,它将使用给定的类名和意图附加列表在android中启动新的活动。我能够成功地开始活动而没有任何额外的东西,但是我面临着他们的问题。
fun <T> Context.openActivity(it: Class<T>, pairs: List<Pair<String, Any>>) {
var intent = Intent()
pairs.forEach {
intent.putExtra(it.first, it.second)
}
startActivity(intent)
}
Run Code Online (Sandbox Code Playgroud)
这里的主要问题是-> intent.putExtra()不会将第二个参数设为Any
我正在尝试将espresso-contrib库添加到我的项目中.这是我的build.gradle文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "example.com.littlebox_hari"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
/*configurations.all {
resolutionStrategy {
force 'com.android.support:appcompat-v7:23.4.0'
}
}*/
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.squareup.retrofit2:retrofit:2.0.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
androidTestCompile 'com.android.support.test:runner:0.4'
androidTestCompile 'com.android.support.test:rules:0.4'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2'
androidTestCompile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2'
compile 'com.android.support:support-annotations:23.4.0'
testCompile 'com.android.support:support-annotations:23.4.0'
androidTestCompile 'com.android.support:support-annotations:23.4.0' …Run Code Online (Sandbox Code Playgroud) 所以我有一个整数数组“images_array”存储在strings.xml中。我试图将它提取到我的 Websites.java 文件中以使用它来显示图像。
但由于某种原因我收到此错误:
我尝试将数组存储在与调用它的文件相同的文件中,它可以工作,只是从 strings.xml 调用它对我不起作用。也许我还没有学到什么?
真的很感激任何帮助。
谢谢!
debounce,throttleFirst和,throttleLast这在Project Reactor的Flux中最为明显。他们有同行吗?
我在 Kotlin 中使用 Dagger 进行依赖注入。现在这里是必要的课程
活动模块
@Module class ActivityModule (val activity : Activity){
@Provides
@ActivityContext
fun provideContext() : Context{
return activity
}
}
Run Code Online (Sandbox Code Playgroud)
活动组件
@PerActivity
@Component(dependencies = arrayOf(ApplicationComponent::class), modules = arrayOf(ActivityModule::class))
interface ActivityComponent {
fun inject(activity: MainActivity)
}
Run Code Online (Sandbox Code Playgroud)
主要活动
@Inject @ActivityContext lateinit var context:Context
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
DaggerActivityComponent.builder()
.applicationComponent(MainApplication.getInstance().getApplicationComponent()).activityModule(ActivityModule(this)).build()
.inject(this);
Run Code Online (Sandbox Code Playgroud)
现在我收到以下错误
error: android.content.Context cannot be provided without an @Provides- or @Produces-annotated method.
e:
e: public abstract void inject(@org.jetbrains.annotations.NotNull()
e: ^
e: android.content.Context is injected at
e: app.feed.com.ui.MainActivity.context …Run Code Online (Sandbox Code Playgroud) 我有以下查询方法定义:
@Query("SELECT * FROM box_jobs")
fun getAll(): Maybe<List<BoxJob>>
Run Code Online (Sandbox Code Playgroud)
我想返回此查询的结果,如果它不为空,否则返回REST API调用的结果.这是我的逻辑代码:
override fun loadTasks(): Maybe<List<Task>> {
Log.d(TAG, "Searching tasks in database")
return boxJobDao.getAll()
.map { boxJobs -> boxJobMapper.entityListToTaskList(boxJobs) }
.switchIfEmpty(syncTasks())
}
private fun syncTasks(): Maybe<List<Task>> {
Log.d(TAG, "Loading tasks from server")
return api.boxJobs(DEVICE_ID)
.doOnSuccess({ boxJobDtoList ->
Log.d(TAG, "${boxJobDtoList.size} box jobs loaded from server")
saveToDb(boxJobDtoList)
})
.doOnError({ error -> Log.d(TAG, "Error during tasks loading", error) })
.map { boxJobDtoList -> boxJobMapper.dtoListToTaskList(boxJobDtoList) }
.toMaybe()
}
Run Code Online (Sandbox Code Playgroud)
问题是,总是使用空调用Maybe返回空数据库,因此运算符不起作用.getAll()onSuccess()List<BoxJob>switchIfEmpty()
我认为这是不正确的行为.我是对的还是我做错了什么?这个问题有解决方法吗?
我在布局中使用 ScrollView,如下所示:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- my rest xml code-->
</LinearLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
然后我的布局预览显示如下:
为什么布局看起来像这样?!