1

問題があります。ボタンを押すと曲を再生する Android プロジェクトを実装しました。また、別のビュー (アプリには 2 つのフラグメントがあります) に mp3 ファイルのメタデータが表示されます。メタデータとは、インタープリターの名前、songcover を意味します... raw ディレクトリには mp3 ファイルが 1 つしかありません。しかし、別のmp3ファイルをrawディレクトリに置くと(コードを変更せずにこれだけ)、メタ情報が突然消えます。結果はヌルです。これらは表示されなくなりました。1 つの mp3 ファイルを削除すると、メタデータが再び表示されました。別の mp3 ファイルを raw ディレクトリに配置できなかった理由を教えてください。私はそれを理解していません。:(コードを何も変更せず、別のmp3ファイルを入れるだけです。その後、機能しません。

どうすれば修正できますか?前もって感謝します

4

1 に答える 1

0

AsyncTask 内でそれぞれをロードするようなことを試してください。

private class LoadImageTask extends AsyncTask<String, Void, Bitmap>{

    private ImageView artImage;

    public LoadImageTask(ImageView image){
        artImage = image;
    }

    @Override
    protected void onPreExecute() {
        retriever = new MediaMetadataRetriever();
    }

    @Override
    protected Bitmap doInBackground(String... params) {
        retriever.setDataSource(params[0]);
        byte[] art = retriever.getEmbeddedPicture();
        Bitmap bitmap = null;
        if( art != null ){
            bitmap = BitmapFactory.decodeByteArray(art, 0, art.length);
        }
        return bitmap;
    }

    @Override
    protected void onPostExecute(Bitmap bm) {
        if( bm != null ){
            artImage.setImageBitmap(bm);
        }
        else{
            artImage.setImageResource(R.drawable.no_image);
        }
    }

}
于 2014-06-06T05:17:57.543 に答える