在我的应用中,我在drawable文件夹中有一些小的png图像,可以在edittext和textviews中显示。
现在,我可以在edittext和textview中显示这些图像。
我有以下情况: 在User1,他可以选择图像并在edittext中显示。单击发送按钮时,edittext中的文本需要发送给User2。
我正在使用GCM在用户之间发送普通文本。
那么,我怎样才能以文本格式表示图像。 我应该使用什么编码?我应该只有一些特殊字符前面的可绘制图像文件名吗?
例如:如果图像名称是e205,那么可以执行以下操作: “这是普通文字,## e205以前是图片”
就像我在这种情况下使用##一样,可以用来识别后面的单词实际上是图像文件名而不是普通文本?
当User2收到此消息时,只有文本的编码部分才会转换回图像,并以文本视图显示。
答案 0 :(得分:0)
您可以按照此处的说明使用此功能:Drawable to byte[]
Drawable d; // the drawable (Captain Obvious, to the rescue!!!)
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] bitmapdata = stream.toByteArray();
完成后,您可以将其设为字符串:
new String(bitmapdata);
然后你可以通过套接字,gcm或任何你想要的东西发送它。
由您决定制定协议,以便应用程序可以在编码图像和文本之间进行区分。
如果两个客户端都有可绘制的本地存储空间,您只需要告诉他们可绘制的名称,这样他们就可以加载并显示它。
您应该定义一个分隔符,以帮助将字符串拆分为图像/文本
这样的东西可以是你的字符串" IMAGENAME | USERTEXT",只是确保你不要使用任何可以在用户输入的文本中使用的字符。
然后,在另一方面,您可以用
拆分它split("|")
在这种情况下,它将返回一个大小为2的String数组,位置0的IMAGENAME,位置1的USERTEXT。
希望这有帮助。
答案 1 :(得分:0)
您可以简单地转换/构建消息json并使用此json字符串来传递GCM。例如,请参阅下面的user1发送给用户的消息。
{
"message": {
"id": 12345,
"from_name": "John",
"to_name": "Steave,
"body": "\"Hello\"",
"image_id": "\"1.png\""
}
}
现在在user2的一边。当user2收到消息[GCM]时,您将获得上面的json字符串。将json字符串转换为对象或简单地解析它。提取你想要的内容。例如在你的情况下image_id。匹配本地目录或资产中的图像ID,并将其用于显示user2。
如果您需要更多信息,请与我们联系。
谢谢。