0

QRジェネレーターAPIにHTTPリクエストを送信し、画像をimageviewに配置することで、アプリでQRコードを生成しようとしています。しかし、画面が空白になっています。私は見つけたいくつかの異なる解決策を試しましたが、運がありませんでした。これが私が使用しているコードです。マニフェストにインターネット許可も追加しました

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"
    tools:context=".MainActivity" >

    <ImageView android:id="@+id/qrImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {

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

        ImageView imageview = (ImageView) findViewById(R.id.qrImageView);

        String qrURL = "http://api.qrserver.com/v1/create-qr-code/?data=thisisatest&amp;size=300x300";
        String src = "QRGenerator";

        Drawable qrCode=null;
        try {
            qrCode = drawable_from_url(qrURL, src);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } 

        imageview.setImageDrawable(qrCode); 
    }

        Drawable drawable_from_url(String qurl, String src_name) throws MalformedURLException, IOException {
            URL url = new URL(qurl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            InputStream is = connection.getInputStream();
            Drawable d = Drawable.createFromStream(is, src_name);
            return d;
        }

}
4

2 に答える 2

1

最初に画像をダウンロードする必要があります。

public static Bitmap loadBitmap(String url) {
    Bitmap bitmap = null;
    InputStream in = null;
    BufferedOutputStream out = null;

    try {
        in = new BufferedInputStream(new URL(url).openStream(), IO_BUFFER_SIZE);

        final ByteArrayOutputStream dataStream = new ByteArrayOutputStream();
        out = new BufferedOutputStream(dataStream, IO_BUFFER_SIZE);
        copy(in, out);
        out.flush();

        final byte[] data = dataStream.toByteArray();
        BitmapFactory.Options options = new BitmapFactory.Options();
        //options.inSampleSize = 1;

        bitmap = BitmapFactory.decodeByteArray(data, 0, data.length,options);
    } catch (IOException e) {
        Log.e(TAG, "Could not load Bitmap from: " + url);
    } finally {
        closeStream(in);
        closeStream(out);
    }

    return bitmap;
}

次に、Imageview.setImageBitmapを使用して、ビットマップをImageViewに設定します

于 2012-11-25T00:11:28.243 に答える
0

私はそれを解決しました。インターネットに接続されていないエミュレーターで実行していたため、明らかに API に接続できませんでした。私は自分の電話でそれを実行しましたが、うまくいきました。他の方の参考のために質問を残しておきます。入力していただきありがとうございます

于 2012-11-29T11:47:53.373 に答える