質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

6752閲覧

BASE64でエンコードした画像データをAndroidで表示しようとしたら、!!! FAILED BINDER TRANSACTION !!!となる

GH_usami13

総合スコア24

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2015/10/12 07:36

編集2015/10/12 08:01

画像データ(写真データ)をサーバーからJSON形式で受信して表示させようとすると、
!!! FAILED BINDER TRANSACTION !!!
となってしまいます。

画像サイズを大幅に落とすと、
エラーがでないのですが、
できれば、画像サイズは落としたくありません。

また、BASE64に変換した文字列が長すぎて、
JSON形式で送信するときも、
途中までしか表示がされません。

お聞きしたいことは2点です。
・サーバー側(Java)でJSON形式にする際に、BASE64以外に圧縮する方法はありますでしょうか?
・画質を落とさずにAndroidとサーバーでデータのやりとりをする方法はありますでしょうか?

【ソースコード】
BASE64へのエンコードをおこなっているソースコードです。

java

1String imageStr1 = Base64.encodeToString(image1 , Base64.NO_WRAP)

サーバー側では

JAVA

1ByteArrayInputStream imageBlob1 = new ByteArrayInputStream(imageStr1);

Blob型としてMySQLに挿入して、

java

1byte[] imageByte1 = imageBlob1.getBytes(1, (int)imageBlob1.length()); 2String imageStr1 = new String(Hex.encodeHex(imageByte1));

MySQLからBlob型で抽出した値をString型に変換して、
JSON形式で送信しております。

そのJSONをAndroid側で

java

1JSONObject json = new JSONObject(result);

受信して、結果を表示させてみると
39583223hkli3u5
BASE64の途中で結果が途切れてしまっている状態です。

何卒、みなさまのお力添えのほど、
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

本当にJSON形式のせいなのでしょうか。
Bundleに詰めようとして落ちていたりしていないでしょうか。

Stringの容量限界達しているためではないでしょうか。
Stringを経由せずにByteArrayInputStreamを作ることで回避できそうですが。

投稿2015/10/12 08:03

編集2015/10/12 10:42
yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GH_usami13

2015/10/12 10:08

ご回答有り難うございます。 おっしゃられる通り、 一旦、Activityで受け取った後、 別のActivityへIntentで遷移した時に Bundleの容量限界を超えていたのだと思います。 JSON形式で途中までしか表示されなかったのは 単にlogcatの表示限界を超えていたようでした。 http://nvtrlab.jp/blog/penco/%E6%AC%A1%E3%81%AEactivity%E3%81%AB%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AE%E5%A4%A7%E3%81%8D%E3%81%84bitmap%E3%82%92%E6%B8%A1%E3%81%99.html この方法を用いて解決をさせました。 誠にありがとうございました。 >Stringを経由せずにByteArrayInputStreamを作ることで回避できそうですが。 この件に関しては、現状は問題なさそうなで、後で調べてコードの最適化を考えていきます。 ご指摘ありがとうございます
yona

2015/10/12 10:42

解決してよかったです。 修正タイミングが悪かったみたいなので、修正した内容を復帰させました。
GH_usami13

2015/10/12 11:11

何度も質問の修正をしてしまって、ご迷惑をおかけいたしました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問