2017-08-23 3 views
0

で存在していないQCMediaPlayerのメディアプレーヤは、私がhttps://code.tutsplus.comにチュートリアル「着メロランダマイザAndroid上での作成」を以下の私の着信音をランダム化するためのアプリを構築しましたが、私はアプリを実行したとき、私はこのエラーを取得:MediaPlayerの-JNI:RingtoneManager

E/MediaPlayer-JNI:QCMediaPlayer mediaplayer NOT

そして着信音はListViewに読み込まれません。ここで

は私のコードです:

mainactivity.java:

public class MainActivity extends AppCompatActivity { 
private ListView list; 
private ToggleButton toggle; 
private List<Ringtone> ringtones; 

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

    toggle = (ToggleButton) findViewById(R.id.toggleButton); 
    list = (ListView) findViewById(R.id.list_of_ringtones); 

    ringtones = RingtoneHelper.fetchAvailableRingtones(this); 

    initToggle(); 
    initList(); 

} 

public void initToggle(){ 
    final SharedPreferences sharedPreferences = getSharedPreferences("Randomizer", Context.MODE_PRIVATE); 
    boolean active = sharedPreferences.getBoolean("active", false); 
    toggle.setChecked(active); 

    toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      sharedPreferences.edit().putBoolean("active", isChecked).apply(); 
     } 
    }); 
} 

public void initList(){ 
    ArrayAdapter<Ringtone> adapter = new ArrayAdapter<Ringtone>(this, android.R.layout.simple_list_item_1){ 
     @NonNull 
     @Override 
     public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 
      TextView item = (TextView) super.getView(position, convertView, parent); 
      String title = ringtones.get(position).getTitle(MainActivity.this); 
      item.setText(title); 
      Log.v("MainActivity", title); 
      return item; 
     } 
    }; 
    list.setAdapter(adapter); 
} 

}

ringreceiver.java

public class RingReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if(intent.getAction().equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)){ 
     String callState = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
     if(callState.equals(TelephonyManager.EXTRA_STATE_RINGING)){ 
      RingtoneHelper.changeRingtone(context); 
     } 
    } 
} 

}

ringtonehelper.java

public class RingtoneHelper { 

public static List<Ringtone> fetchAvailableRingtones(Context context){ 
    List<Ringtone> list = new ArrayList<>(); 
    RingtoneManager rm = new RingtoneManager(context); 
    rm.setType(RingtoneManager.TYPE_NOTIFICATION); 

    Cursor ringtones = rm.getCursor(); 
    int count = ringtones.getCount(); 
    for(int i = 0; i <= count; i++){ 
     list.add(rm.getRingtone(i)); 
     Log.v("Ringtone Helper",String.valueOf(count)); 

    } 
    return list; 
} 

public static void changeRingtone(Context context){ 
    SharedPreferences sharedPreferences = context.getSharedPreferences("randomizer", Context.MODE_PRIVATE); 
    if(!sharedPreferences.getBoolean("active", false)){ 
     return; 
    } 
    RingtoneManager rm = new RingtoneManager(context); 
    Random random = new Random(System.currentTimeMillis()); 

    int n = random.nextInt(rm.getCursor().getCount()); 
    RingtoneManager.setActualDefaultRingtoneUri(context, RingtoneManager.TYPE_RINGTONE, rm.getRingtoneUri(n)); 
} 

}

私はいくつか他の人がこの質問に対処しているが、MediaPlayerのを使用している間、彼らはエラーを得たので、私は彼らの答えはここに適用されないと思う知っています。

何が間違っていると思いますか?私は何か提案を感謝します。

はあなた

答えて

0

は、だから私はアンドロイドのMediaPlayerを通じて曲のURIを取得することにより、問題を解決し感謝し、私はそのE/MediaPlayerの-JNI得ることはありません。もうQCMediaPlayerのMediaPlayerの存在しないエラーを。解決した1つの問題が、アプリはまだ動作しません。ですから、私の次のアイデアは、より深く共有された設定にデバッグすることです。