如何在android中发送像whatsapp这样的媒体文件

如何在android中发送像whatsapp这样的媒体文件,android,android-imageview,android-image,android-webservice,Android,Android Imageview,Android Image,Android Webservice,我正在开发一款应用程序,可以通过互联网发送图像、音频和视频。接收此媒体文件的人必须已在其设备中安装了“我的应用” 我现在能做的就是压缩要发送的图像。我不知道从哪里开始,因为大多数在线教程都使用了意图,但我不想触发另一个应用程序来执行发送。我的应用程序应该能够自己完成这一切 这就是我压缩图像的方式 public class ImageCompression extends AsyncTask<String, Void, String> { private Context contex

我正在开发一款应用程序,可以通过互联网发送图像、音频和视频。接收此媒体文件的人必须已在其设备中安装了“我的应用”

我现在能做的就是压缩要发送的图像。我不知道从哪里开始,因为大多数在线教程都使用了意图,但我不想触发另一个应用程序来执行发送。我的应用程序应该能够自己完成这一切

这就是我压缩图像的方式

public class ImageCompression extends AsyncTask<String, Void, String> {

private Context context;
private static final float maxHeight = 1280.0f;
private static final float maxWidth = 1280.0f;


public ImageCompression(Context context){
    this.context=context;
}

@Override
protected String doInBackground(String... strings) {
    if(strings.length == 0 || strings[0] == null)
        return null;

    return compressImage(strings[0]);
}

protected void onPostExecute(String imagePath){
    // imagePath is path of new compressed image.
}
公共类ImageCompression扩展了异步任务{
私人语境;
专用静态最终浮动最大高度=1280.0f;
专用静态最终浮动最大宽度=1280.0f;
公共图像压缩(上下文){
this.context=context;
}
@凌驾
受保护的字符串背景(字符串…字符串){
if(strings.length==0 | | strings[0]==null)
返回null;
返回压缩图像(字符串[0]);
}
受保护的void onPostExecute(字符串imagePath){
//imagePath是新压缩图像的路径。
}

那是很久以前的事了。我是android开发新手。使用firebase很容易解决这个问题。只需在firebase中上传一个文件并发送包含图像uri的FCM通知

Uri file = Uri.fromFile(new File("path/to/images/rivers.jpg"));
StorageReference riversRef = storageRef.child("images/"+file.getLastPathSegment());
UploadTask uploadTask = riversRef.putFile(file);

Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
    @Override
    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
        if (!task.isSuccessful()) {
            throw task.getException();
        }

        // Continue with the task to get the download URL
        return ref.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()) {
            Uri downloadUri = task.getResult();
            int id =1;
FirebaseMessaging fm = FirebaseMessaging.getInstance();
fm.send(new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com")
  .setMessageId("1")
  .addData("my_message", downloadUri.toString())
  .addData("my_action","SAY_HELLO")
  .build());

        } else {
            // Handle failures
            // ...
        }
    }
});
urifile=Uri.fromFile(新文件(“path/to/images/rivers.jpg”);
storagereferef=storageRef.child(“images/”+file.getLastPathSegment());
UploadTask UploadTask=riversRef.putFile(文件);
Task urlTask=uploadTask.continueWithTask(新的Continuation(){
@凌驾
公共任务(@NonNull Task Task)引发异常{
如果(!task.issusccessful()){
抛出task.getException();
}
//继续执行任务以获取下载URL
return ref.getDownloadUrl();
}
}).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Uri downloadUri=task.getResult();
int-id=1;
FirebaseMessaging fm=FirebaseMessaging.getInstance();
fm.send(新的RemoteMessage.Builder(发送者ID+“@gcm.googleapis.com”)
.setMessageId(“1”)
.addData(“我的消息”,downloadUri.toString())
.addData(“我的行动”,“说你好”)
.build());
}否则{
//处理故障
// ...
}
}
});

那是很久以前的事了。我是android开发新手。使用firebase很容易解决这个问题。只需在firebase中上传一个文件并发送包含图像uri的FCM通知

Uri file = Uri.fromFile(new File("path/to/images/rivers.jpg"));
StorageReference riversRef = storageRef.child("images/"+file.getLastPathSegment());
UploadTask uploadTask = riversRef.putFile(file);

Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
    @Override
    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
        if (!task.isSuccessful()) {
            throw task.getException();
        }

        // Continue with the task to get the download URL
        return ref.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()) {
            Uri downloadUri = task.getResult();
            int id =1;
FirebaseMessaging fm = FirebaseMessaging.getInstance();
fm.send(new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com")
  .setMessageId("1")
  .addData("my_message", downloadUri.toString())
  .addData("my_action","SAY_HELLO")
  .build());

        } else {
            // Handle failures
            // ...
        }
    }
});
urifile=Uri.fromFile(新文件(“path/to/images/rivers.jpg”);
storagereferef=storageRef.child(“images/”+file.getLastPathSegment());
UploadTask UploadTask=riversRef.putFile(文件);
Task urlTask=uploadTask.continueWithTask(新的Continuation(){
@凌驾
公共任务(@NonNull Task Task)引发异常{
如果(!task.issusccessful()){
抛出task.getException();
}
//继续执行任务以获取下载URL
return ref.getDownloadUrl();
}
}).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Uri downloadUri=task.getResult();
int-id=1;
FirebaseMessaging fm=FirebaseMessaging.getInstance();
fm.send(新的RemoteMessage.Builder(发送者ID+“@gcm.googleapis.com”)
.setMessageId(“1”)
.addData(“我的消息”,downloadUri.toString())
.addData(“我的行动”,“说你好”)
.build());
}否则{
//处理故障
// ...
}
}
});

您需要后端服务器,其中webservice可能接受图像url或任何媒体和目标受众…您可以使用websocket,然后使用服务器客户端推送将服务器上接收的数据推送到目标设备mechanism@virendrao我有一个使用GCM发送消息的后端服务器。你有一个我可以使用的例子吗d媒体?您想将图像或媒体显示为通知或类似whatsapp的内容,您可以在打开时看到图像chat@virendrao如果可能的话,我会像聊天信息一样显示一个通知当点击notif时,它会带他去相关的活动。我没有问题实现通知。问题是发送和接收mediaCheckout-您需要后端服务器,其中webservice可能接受图像url或任何媒体和目标受众…您可以使用websocket然后将服务器上接收到的数据推送到目标设备使用服务器客户端推送的cemechanism@virendrao我有一个使用GCM发送消息的后端服务器。你有我可以用来发送媒体的示例吗?你想将图像或媒体显示为通知或类似whatsapp的内容,在打开时可以看到图像chat@virendrao如果可能,我会像聊天室一样显示通知sages.(也是Whatap有图像通知)当点击notif时,它将带他去相关活动。我在执行通知方面没有问题。问题是发送和接收mediaCheckout-