下一个问题是,在DataSourceFactory中,当我创建新的DefaultDataSourceFactory时,出现下一个错误“错误的第一个参数类型在Util.getUserAgent中找到了“ android.View.OnClicklistener”必需的“ android ... Context”(this ...)
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
final ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
TrackSelection.Factory trackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this,
getPackageName()), bandwidthMeter);
MediaSource mediaSource = new ExtractorMediaSource(Uri.parse(cuento.getUrl()),
dataSourceFactory, extractorsFactory, new Handler(), Throwable::printStackTrace);
}
});
为什么?我尝试使用getApplicationContext()或Myclass.this或私有Context mContext,但没有办法解决问题。
答案 0 :(得分:0)
因为您位于内部类中,所以此传递了对内部类的引用,因此您需要调用getContext()
或YourAcitivty.this
但是根据您的解释,错误是关于Util.getUserAgent的,因此请使用以下代码替换您的代码。
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(getContext(), Util.getUserAgent(getContext(),
getPackageName()), bandwidthMeter);