android:在文本中表示可绘制的图像以便发送

android:在文本中表示可绘制的图像以便发送,android,android-layout,google-cloud-messaging,android-imageview,Android,Android Layout,Google Cloud Messaging,Android Imageview,在我的应用程序中,我在drawable文件夹中有一些小的png图像,可以在edittext和TextView中显示 现在,我可以在edittext和textview中显示这些图像 我有以下情况: 在User1,他可以选择图像并在edittext中显示。单击发送按钮时,edittext中的文本需要发送到User2 我使用GCM在用户之间发送普通文本 那么,如何用文本格式表示图像呢。 我应该使用什么编码?我应该在可绘制图像文件名前面加上一些特殊字符吗 例如:如果图像名称为e205,则可以执行以下操作

在我的应用程序中,我在drawable文件夹中有一些小的png图像,可以在edittext和TextView中显示

现在,我可以在edittext和textview中显示这些图像

我有以下情况: 在User1,他可以选择图像并在edittext中显示。单击发送按钮时,edittext中的文本需要发送到User2

我使用GCM在用户之间发送普通文本

那么,如何用文本格式表示图像呢。
我应该使用什么编码?我应该在可绘制图像文件名前面加上一些特殊字符吗

例如:如果图像名称为e205,则可以执行以下操作: “这是普通文本,##e205前一个是图像”

就像我在本例中使用的###一样,可以用什么来标识以下单词实际上是图像文件名而不是普通文本


当User2收到此消息时,只有文本的编码部分会被转换回图像,并显示在文本视图中。

您可以使用此选项,如下所述:

完成后,您可以将其设置为字符串:

new String(bitmapdata);
然后,您可以通过套接字、gcm或任何您想要的方式发送它

由您制定协议,以便应用程序可以区分编码图像和文本

如果两个客户端在本地存储中都有可绘制文件,则只需告诉他们可绘制文件的名称,这样他们就可以加载和显示该文件

您应该定义一个分隔符,用于将字符串拆分为图像/文本

类似这样的字符串可以是“IMAGENAME | USERTEXT”,但请确保不要在用户输入的文本中使用任何字符

然后,在另一边,你可以用

split("|")
在本例中,它将返回一个大小为2的字符串数组,位置0上为IMAGENAME,位置1上为USERTEXT


希望这对您有所帮助。

您可以按照此处的说明使用:

完成后,您可以将其设置为字符串:

new String(bitmapdata);
然后,您可以通过套接字、gcm或任何您想要的方式发送它

由您制定协议,以便应用程序可以区分编码图像和文本

如果两个客户端在本地存储中都有可绘制文件,则只需告诉他们可绘制文件的名称,这样他们就可以加载和显示该文件

您应该定义一个分隔符,用于将字符串拆分为图像/文本

类似这样的字符串可以是“IMAGENAME | USERTEXT”,但请确保不要在用户输入的文本中使用任何字符

然后,在另一边,你可以用

split("|")
在本例中,它将返回一个大小为2的字符串数组,位置0上为IMAGENAME,位置1上为USERTEXT


希望这有帮助。

您可以简单地转换/构建消息json,并使用此json字符串传递GCM。例如,请参见下面user1发送给user的消息

{
  "message": {
    "id": 12345,
    "from_name": "John",
    "to_name": "Steave,
    "body": "\"Hello\"",
    "image_id": "\"1.png\""
  }
}
现在在user2的旁边。当user2收到消息[GCM]时,您会得到上面的json字符串。将json字符串转换为对象或简单地解析它。提取您想要的内容。例如,在您的情况下,映像id。匹配本地目录或资源中的映像id,并将其用于user2的显示

如果你需要更多信息,请告诉我


谢谢。

您可以简单地转换/构建消息json,并使用此json字符串传递GCM。例如,请参见下面user1发送给user的消息

{
  "message": {
    "id": 12345,
    "from_name": "John",
    "to_name": "Steave,
    "body": "\"Hello\"",
    "image_id": "\"1.png\""
  }
}
现在在user2的旁边。当user2收到消息[GCM]时,您会得到上面的json字符串。将json字符串转换为对象或简单地解析它。提取您想要的内容。例如,在您的情况下,映像id。匹配本地目录或资源中的映像id,并将其用于user2的显示

如果你需要更多信息,请告诉我



谢谢。

我应该在可绘制图像文件名前面加上一些特殊字符吗?是的,你应该用一些永远不会被其他方式使用的字符将其括起来?你能推荐一下吗?另外,我已经更新了这个问题,我刚刚读到两个客户端都在本地存储中有可绘制的名称,然后您只需要可绘制的名称,您可以使用类似^%IMAGENAME^%USERTEXT的内容,任何不常用的内容,然后使用String.split(^%)在接收端。请用这个更新你的答案,我会标记你的答案。我应该用一些特殊字符作为可绘制图像文件名的前缀吗?是的,你应该用一些永远不会被其他方式使用的字符将其括起来?你能推荐一下吗?另外,我已经更新了这个问题,我刚刚读到两个客户端都在本地存储中有可绘制的名称,然后您只需要可绘制的名称,您可以使用类似^%IMAGENAME^%USERTEXT的内容,任何不常用的内容,然后使用String.split(^%)在接收方。请用此更新您的答案,我将标记您的答案。首先,您可以将图像上载到服务器,并使用图像url发送推送通知。GCM在文本字符串中有一些限制。您只能使用GCM,只需通知其他用户服务器上有一些新的更新可用,然后您就可以从服务器获取。@BhavdipPathar两个用户的可绘制文件夹中都有图像,因此无需上传到服务器,这很简单。发送GCM消息时,发送图像名称或将唯一id放入。当有人收到消息时使用此唯一id。@BhavdipPathar那么,接收用户如何理解文本是图像文件名而不是普通文本?首先,您可以将图像上载到服务器并使用图像url发送推送通知。GCM在文本字符串中有一些限制。您只能使用GCM,只需通知其他用户服务器上有一些新的更新可用,然后您就可以从服务器获取。@BhavdipPathar两个用户的可绘制文件夹中都有图像,因此无需上传到服务器,这很简单。发送图像名称或将唯一id放入whi