小编M.G*_*M.G的帖子

房间类型地图转换器

您将如何编写Map的TypeConverter?我的方法是由Moshi来做

class Converters() {

    val moshi = Moshi
            .Builder()
            .add(KotlinJsonAdapterFactory())
            .build()

    val mapOfStringsType = Types.newParameterizedType(Map::class.java, String::class.java, String::class.java)
    val mapOfStringsAdapter = moshi.adapter<Map<String, String>>(mapOfStringsType)


    @TypeConverter
    fun stringToMap(data: String): Map<String, String> {
        return mapOfStringsAdapter.fromJson(data).orEmpty()
    }

    @TypeConverter
    fun mapToString(map: Map<String, String>): String {
        return mapOfStringsAdapter.toJson(map)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,它闻起来是因为我无法通过Converters()构造函数注入Moshi 。而且,恐怕也不是最好的表现。

android android-room android-architecture-components android-jetpack

2
推荐指数
1
解决办法
1384
查看次数

viewmodel在屏幕方向上进行网络调用更改android

我是android体系结构组件的新手,我对它一点也不困惑viewmodel。我正在构建一个从服务器获取项目列表并在布局中显示为列表的应用程序。我已经在Repository课堂上实现了网络通话。

Repository.java:

//Get list of top rated movies
    public LiveData<NetworkResponse> getTopRatedMovies() {
        final MutableLiveData<NetworkResponse> result = new MutableLiveData<>();
        ApiService api = retrofit.create(ApiService.class);
        Call<MovieData> call = api.getTopRateMovies("api_key");
        call.enqueue(new Callback<MovieData>() {
            @Override
            public void onResponse(Call<MovieData> call, Response<MovieData> response) {
                result.postValue(new NetworkResponse(response.body()));
            }

            @Override
            public void onFailure(Call<MovieData> call, Throwable t) {
                Log.e(TAG, t.getLocalizedMessage());
                result.postValue(new NetworkResponse(t));
            }
        });
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

现在在ViewModel课堂上我正在这样做:

public class MovieListViewModel extends ViewModel {


    public LiveData<NetworkResponse> result, topRatedMovies;
    public LiveData<List<MovieEntity>> favoriteMovies;

    private Repository repository; …
Run Code Online (Sandbox Code Playgroud)

android android-livedata android-viewmodel android-architecture-components android-jetpack

2
推荐指数
1
解决办法
1865
查看次数

错误(-19,0)Mediaplayer

我试图制作一个在按钮点击时播放特定声音的应用程序,我得到了静态创建的100个按钮,不是在数组或任何东西,我正确地分配了每个按钮的声音问题是,在播放了一些按钮之后我的错误是我的问题

  1. 无论如何我都可以从这个混乱中切换到通用代码
  2. 无论如何,我可以停止得到这个错误和声音继续工作在每个按钮无论播放的声音数量?

以下是我的代码:

   package com.example.buttonsdemo;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


       Button messageButton_0 = (Button) findViewById(R.id.akali);
       final MediaPlayer mpButtonClick_0= MediaPlayer.create(this,R.raw.akali) ;
       messageButton_0.setOnClickListener(new View.OnClickListener() {

           @Override
           public void onClick(View arg0) {

              mpButtonClick_0.start();
              if(!mpButtonClick_0.isPlaying()){
                 mpButtonClick_0.stop();
                 mpButtonClick_0.release();
              }

     }  
});
Run Code Online (Sandbox Code Playgroud)

它继续这样100个按钮或任何帮助PLZ

Logcat:
03-04 16:21:21.925: E/MediaPlayer(5769): error (-19, 0)
03-04 16:21:21.925: E/MediaPlayer(5769): stop called in state 0
03-04 16:21:21.925: …
Run Code Online (Sandbox Code Playgroud)

android android-mediaplayer

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

WorkManager 向 JobScheduler 添加了太多作业

我正在尝试使用 安排任务在特定时间运行WorkManager。我之所以使用它beginUniqueWork,是因为我只想为该特定 ID (uniqueWorkName) 一次安排一项任务。但enqueue多次调用后,有时会出现以下错误:

java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
    at android.os.Parcel.readException(Parcel.java:2012)
    at android.os.Parcel.readException(Parcel.java:1950)
    at android.app.job.IJobScheduler$Stub$Proxy.schedule(IJobScheduler.java:180)
    at android.app.JobSchedulerImpl.schedule(JobSchedulerImpl.java:44)
    at androidx.work.impl.background.systemjob.SystemJobScheduler.scheduleInternal(SystemJobScheduler.java:85)
    at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule(SystemJobScheduler.java:64)
    at androidx.work.impl.Schedulers.scheduleInternal(Schedulers.java:98)
    at androidx.work.impl.Schedulers.schedule(Schedulers.java:69)
    at androidx.work.impl.WorkManagerImpl.rescheduleEligibleWork(WorkManagerImpl.java:398)
    at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:66)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
    at java.lang.Thread.run(Thread.java:764)
Run Code Online (Sandbox Code Playgroud)

当我在 every 之后使用以下代码片段记录待处理作业的数量时enqueue,我注意到每次调用都会有 3 个新作业添加到列表中(虽然我预计总数会保持在 1)。

JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
int size = jobScheduler.getAllPendingJobs().size();
Run Code Online (Sandbox Code Playgroud)

这是我用来安排任务的代码:

val work = OneTimeWorkRequest.Builder(workerClass)
        .setInitialDelay(offset, TimeUnit.MILLISECONDS)
        .build()
WorkManager.getInstance()
        .beginUniqueWork(uniqueNameForTask, ExistingWorkPolicy.REPLACE, work)
        .enqueue()
Run Code Online (Sandbox Code Playgroud)

这里看起来有什么不对劲吗?我缺少什么?

android android-jobscheduler android-jetpack android-workmanager

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

如何在sqlite中存储mp3文件?

我正在创建一个 android 应用程序,它是一个方言词典。我的问题是我不知道如何在数据库中存储 audio.mp3 文件。

任何人都可以教我或分享一些如何制作它的代码吗?

database sqlite mp3 android android-sqlite

0
推荐指数
1
解决办法
1万
查看次数

在Android中,媒体播放器无法正常工作

当我尝试以下操作时,媒体播放器无法正常工作:

             player=MediaPlayer.create(this, R.raw.mh);
             player.start();
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

MediaPlayer类型中的方法create(Context,int)不适用于参数(new View.OnClickListener(){},int)

android android-mediaplayer

-1
推荐指数
1
解决办法
2390
查看次数