gpt4 book ai didi

android - MediaMetadataRetriever setdatasource 出错

转载 作者:行者123 更新时间:2023-11-29 18:03:47 27 4
gpt4 key购买 nike

我对 MediaMetadataRetriever setdatasource 方法有疑问。我创建了一个简单的项目。 main.xml 只有一个 TextView ,它应该显示 music.mp3 的参数。 mp3 在项目原始文件中。 mainActivity 看起来像:

public class MainActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

TextView tvMain = (TextView)findViewById(R.id.textView_songParam);
// load data file
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(R.raw.music);

String out = "";
// get mp3 info
out += metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
out += "\n";
out += metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
out += "\n";
//out += metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
//out += "\n";
//out += metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR);
//out += "\n";
// convert duration to minute:seconds
String duration = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long dur = Integer.parseInt(duration);
String seconds = String.valueOf(dur % 60);
String minutes = String.valueOf(dur / 60000);
out += "Length: [ " + minutes + "m" + seconds + "s ]\n";

// close object
metaRetriever.release();
// display output
tvMain.setText(out);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

我在行中做错了什么,我在哪里设置数据源??我不明白?

最佳答案

您将整数传递给 setDataSource,因为 R.raw.music 返回与文件相关的资源 ID,而不是文件的路径。您需要将路径或文件描述符作为参数传递给 setDataSource。试试这个代码:

    AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.music);
if (afd != null) {
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(afd.getFileDescriptor());
}

关于android - MediaMetadataRetriever setdatasource 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14437905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com