5

カスタムキーボードを作成し、 AndroidSDKの「SoftKeyboard」サンプルを使用しようとしています。そのサンプルでいくつかの変更を行い、カスタムキーボードを作成しました。このカスタムキーボードは、Androidデバイスのデフォルトのメッセージングアプリで使用できます。

次に、カスタムキーボードのボタンをクリックして、SMSを入力するときに画像を追加します。「SoftKeyBoard.java」クラス( )にありString Builder、キーボードを使用して文字を入力すると文字が追加されることに気付きました。private StringBuilder mComposing = new StringBuilder()

以下のようにSDカードの画像を追加してみましたが、

        String imageDataString = "";

        String path = Environment.getExternalStorageDirectory().toString() + "/SamplePictures/";
         File file = new File(path, "myimage.jpg");
         try {

             FileInputStream imageInFile = new FileInputStream(file);
             byte imageData[] = new byte[(int) file.length()];
             imageInFile.read(imageData);

             // Converting Image byte array into Base64 String
             imageDataString = encodeImage(imageData);



            imageInFile.close();

         } catch (FileNotFoundException e) {
             System.out.println("Image not found" + e);
         } catch (IOException ioe) {
             System.out.println("Exception while reading the Image " + ioe);
         }

そして、以下のように文字列ビルダーに「imageDataString」を追加しました。

mComposing.append(imageDataString);

しかし、私は画像ではなく、非常に多くのキャラクターを手に入れました。キーボードを使用してSMSを入力するときに画像を挿入することはできますか?

更新:次のコードでImageSpanとSpannableを使用しました。

SpannableStringBuilder ssb = new SpannableStringBuilder( "Here's a my picture  " );
            Bitmap smiley = BitmapFactory.decodeResource( getResources(), R.drawable.bitmap );
            ssb.setSpan( new ImageSpan( smiley ), 16, 17,Spannable.SPAN_INCLUSIVE_INCLUSIVE );
            mComposing.append(ssb);

ただし、「これは私の写真です」のみが表示され、画像は表示されません。EditTextを使用してサンプルの個別のアプリを作成し、そのEditTextのテキストとして「ssb」変数の上に設定しました。次に、画像がうまく表示されます。ただし、メッセージングアプリでは機能しません。メッセージングアプリのEditTextを設定できれば、画像を設定できると思います。

メッセージングアプリの編集テキストにアクセスして更新する方法はありますか?前もって感謝します..!!

4

1 に答える 1

1

あなたがやりたいことは、すでにここで説明されているソリューションである にImageSpan追加された を使用することだと思います。キーボードの画像ボタンを押すと、そこから既存のテキストを取得し、画像を含む を追加し、それを に戻すことによって を更新するメソッドを起動します。SpannableeditTextImageSpaneditText

于 2013-02-27T11:40:28.720 に答える