Я работаю над приложением, которое должно подключаться к URL-адресу, извлекать изображение в виде растрового изображения, а затем показывать его в средстве просмотра на основе библиотеки PanoramaGL.
Проблема в том, что даже если в журнале написано, что изображение захвачено, дисплей остается пустым.
Вот код, который я использую для извлечения растрового изображения, также следуя очень подробному ответу, который я нашел там Как загрузить ImageView по URL-адресу в Android?. - на самом деле я хотел бы прочитать изображение напрямую без кеша и т. Д.
Как вы увидите, большая часть кода взята из онлайн-учебников, поскольку я только начинаю разработку.
PanoramaActivity.java (для проверки можно использовать как MainActivity)
import java.io.InputStream;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
import com.panoramagl.PLImage;
import com.panoramagl.PLSpherical2Panorama;
import com.panoramagl.PLView;
public class PanoramaActivity extends PLView {
Private static final String TAG = "+++++++++++++++";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.panorama_activity_main);
new DownloadImageTask(this).execute("http://www.pianetacellulare.it/UserFiles/image/Android/Jelly%20Bean/photo_sphere_esempio.jpg");
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
PanoramaActivity pan;
public DownloadImageTask(PanoramaActivity act) {
this.pan = act;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
Log.d(TAG,"onPostExecute");
PLSpherical2Panorama panorama = new PLSpherical2Panorama();
panorama.setImage(new PLImage(result));
pan.setPanorama(panorama);
}
}
}
Я создал конструктор, передающий PanoramaActivity, так как я предполагаю, что приложение работает до метода onPostExecute, и мне нужно найти способ отобразить изображение. Если я ошибаюсь или есть другие способы, пожалуйста, дайте мне знать.
Я публикую также макет панорамы_activity_main.xml для тестов:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".PanoramaActivity" >
</RelativeLayout>
Любые подсказки приветствуются, спасибо заранее :)
ОБНОВИТЬ. Я попробовал тот же класс AsyncTask, используя ImageView вместо PLView, и изображение вышло, поэтому загрузка изображения выполнена правильно. В использовании PanoramaGL есть что-то неправильное.