在android studio中为firebase实现DS编辑器

在android studio中为firebase实现DS编辑器,android,firebase,Android,Firebase,我正在编写一个社交媒体程序,该程序允许用户将instagram之类的故事上传到个人资料中 我试图实现Ds照片编辑器,每次用户按下按钮,它将带他到相机,然后到照片编辑器。所以基本上我试着用很多方法去做,但不幸的是,它打开了一个白色的页面,没有摄像头,也没有编辑,即使我试图请求许可,我也试图在没有许可的情况下做,但没有成功 public class AddStoryActivity extends AppCompatActivity { private Uri mImageUrl;

我正在编写一个社交媒体程序,该程序允许用户将instagram之类的故事上传到个人资料中 我试图实现Ds照片编辑器,每次用户按下按钮,它将带他到相机,然后到照片编辑器。所以基本上我试着用很多方法去做,但不幸的是,它打开了一个白色的页面,没有摄像头,也没有编辑,即使我试图请求许可,我也试图在没有许可的情况下做,但没有成功



public class AddStoryActivity extends AppCompatActivity {


   private Uri mImageUrl;
   String myUrl ="" ;
   private StorageTask mStorageTask;
   StorageReference storageReference;


   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_add_story);

       storageReference = FirebaseStorage.getInstance().getReference("Story");
      /* CropImage.activity()
               .setAspectRatio(9,16)
               .start(AddStoryActivity.this);

       */

ActivityCompat.checkSelfPermission(AddStoryActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE);

   }

   private String getFileExtensions(Uri uri) {

       ContentResolver contentResolver = getContentResolver();
       MimeTypeMap mime = MimeTypeMap.getSingleton();
       return mime.getExtensionFromMimeType(contentResolver.getType(uri));

   }

   private  void publishStory(){
       final ProgressDialog pd = new ProgressDialog(this);
       pd.setMessage("Posting");
       pd.show();

       if(mImageUrl != null){
           final StorageReference imageReferance = storageReference.child(System.currentTimeMillis()
                   +"."+ getFileExtensions(mImageUrl));

           mStorageTask = imageReferance.putFile(mImageUrl);
           mStorageTask.continueWithTask(new Continuation() {
               @Override
               public Object then(@NonNull Task task) throws Exception {

                   if(!task.isSuccessful())
                   {
                       throw task.getException();

                   }
                   return imageReferance.getDownloadUrl();
               }
           }).addOnCompleteListener(new OnCompleteListener<Uri>() {
               @Override
               public void onComplete(@NonNull Task<Uri> task) {

                   if(task.isSuccessful()){

                       Uri downloadUri = task.getResult();
                       myUrl = downloadUri.toString();

                       String myid = FirebaseAuth.getInstance().getCurrentUser().getUid();
                       DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Story")
                               .child(myid);
                       String storyid = reference.push().getKey();
                       long timend = System.currentTimeMillis()+86400000;

                       HashMap<String,Object> hashMap = new HashMap<>();

                       hashMap.put("imageurl",myUrl);
                       hashMap.put("timestart", ServerValue.TIMESTAMP);
                       hashMap.put("timeend",timend);
                       hashMap.put("storyid",storyid);
                       hashMap.put("userid",myid);


                       reference.child(storyid).setValue(hashMap);
                       pd.dismiss();
                       finish();

                   }else {
                       Toast.makeText(AddStoryActivity.this, "Failed!", Toast.LENGTH_SHORT).show();
                   }
               }
           }).addOnFailureListener(new OnFailureListener() {
               @Override
               public void onFailure(@NonNull Exception e) {
                   Toast.makeText(AddStoryActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
               }
           });


       }else {
           Toast.makeText(this, "No image selected!", Toast.LENGTH_SHORT).show();
       }
   }

   @Override
   protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
       super.onActivityResult(requestCode, resultCode, data);

    /*   if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK){

           CropImage.ActivityResult result = CropImage.getActivityResult(data);

        //   Intent intent=new Intent(AddStoryActivity.this,DsPhotoEditorActivity.class);
         //  intent.setData(mImageUrl);

           mImageUrl = result.getUri();

           publishStory();
       }else {
           Toast.makeText(AddStoryActivity.this,"Something gone wrong!",Toast.LENGTH_SHORT).show();
           startActivity(new Intent(AddStoryActivity.this,MainActivity.class));
           finish();


       }

     */

       if(resultCode==RESULT_OK&&requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {


           //   Intent intent= new Intent(AddStoryActivity.this, DsPhotoEditorActivity.class);
           //     intent.setData(mImageUrl);
           // intent.putExtra(DsPhotoEditorConstants.DS_PHOTO_EDITOR_OUTPUT_DIRECTORY,"Images");
           //intent.putExtra(DsPhotoEditorConstants.DS_TOOL_BAR_BACKGROUND_COLOR, Color.parseColor("#FF6200EE"));
           //intent.putExtra(DsPhotoEditorConstants.DS_MAIN_BACKGROUND_COLOR, Color.parseColor("#FFFFFF"));
           //intent.putExtra(DsPhotoEditorConstants.DS_PHOTO_EDITOR_TOOLS_TO_HIDE,new int[]{DsPhotoEditorActivity.TOOL_WARMTH,DsPhotoEditorActivity.TOOL_PIXELATE});
           //startActivity(intent);
           switch (requestCode) {

               case 200:

                   mImageUrl = data.getData();

                   Intent intent = new Intent(AddStoryActivity.this, DsPhotoEditorActivity.class);
                   intent.setData(mImageUrl);

                   intent.setData(mImageUrl);
                   intent.putExtra(DsPhotoEditorConstants.DS_PHOTO_EDITOR_OUTPUT_DIRECTORY, "Images");
                   intent.putExtra(DsPhotoEditorConstants.DS_TOOL_BAR_BACKGROUND_COLOR, Color.parseColor("#FF6200EE"));
                   intent.putExtra(DsPhotoEditorConstants.DS_MAIN_BACKGROUND_COLOR, Color.parseColor("#FFFFFF"));
                   intent.putExtra(DsPhotoEditorConstants.DS_PHOTO_EDITOR_TOOLS_TO_HIDE, new int[]{DsPhotoEditorActivity.TOOL_WARMTH, DsPhotoEditorActivity.TOOL_PIXELATE});
                   startActivity(intent);


                   publishStory();

                   break;
           }


       }


       else {
           Toast.makeText(AddStoryActivity.this,"Something gone wrong!",Toast.LENGTH_SHORT).show();
           startActivity(new Intent(AddStoryActivity.this,MainActivity.class));
           finish();


       }
   }
}



公共类AddStoryActivity扩展了AppCompatActivity{
私有Uri mImageUrl;
字符串myUrl=“”;
私有存储任务mStorageTask;
StorageReference-StorageReference;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u add\u story);
storageReference=FirebaseStorage.getInstance().getReference(“故事”);
/*CropImage.activity()
.setAspectRatio(9,16)
.start(AddStoryActivity.this);
*/
ActivityCompat.checkSelfPermission(AddStoryActivity.this、Manifest.permission.WRITE\u外部存储);
}
私有字符串getFileExtensions(Uri){
ContentResolver ContentResolver=getContentResolver();
MimeTypeMap mime=MimeTypeMap.getSingleton();
返回mime.getExtensionFromMimeType(contentResolver.getType(uri));
}
私人虚空出版故事(){
最终ProgressDialog pd=新ProgressDialog(本);
pd.setMessage(“发布”);
pd.show();
如果(mImageUrl!=null){
最终的StorageReference ImageReference=StorageReference.child(System.currentTimeMillis()
+“+getFileExtensions(mImageUrl));
mStorageTask=imagereference.putFile(mImageUrl);
mStorageTask.continueWithTask(新的Continuation(){
@凌驾
然后公共对象(@NonNull任务)引发异常{
如果(!task.issusccessful())
{
抛出task.getException();
}
返回ImageReference.getDownloadUrl();
}
}).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Uri downloadUri=task.getResult();
myUrl=downloadUri.toString();
字符串myid=FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference=FirebaseDatabase.getInstance().getReference(“故事”)
.儿童(myid);
String storyid=reference.push().getKey();
long-timend=System.currentTimeMillis()+86400000;
HashMap HashMap=新的HashMap();
put(“imageurl”,myUrl);
put(“timestart”,ServerValue.TIMESTAMP);
hashMap.put(“timeend”,timend);
hashMap.put(“storyid”,storyid);
hashMap.put(“userid”,myid);
reference.child(storyid).setValue(hashMap);
pd.解散();
完成();
}否则{
Toast.makeText(AddStoryActivity.this,“失败!”,Toast.LENGTH\u SHORT.show();
}
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(AddStoryActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
}
});
}否则{
Toast.makeText(这是“未选择图像!”,Toast.LENGTH_SHORT.show();
}
}
@凌驾
受保护的void onActivityResult(int-requestCode、int-resultCode、@Nullable-Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
/*if(requestCode==CropImage.CROP\u IMAGE\u ACTIVITY\u REQUEST\u CODE&&resultCode==RESULT\u OK){
CropImage.ActivityResult结果=CropImage.getActivityResult(数据);
//意向意向=新意向(AddStoryActivity.this,DsPhotoEditorActivity.class);
//intent.setData(mImageUrl);
mImageUrl=result.getUri();
发表故事();
}否则{
Toast.makeText(AddStoryActivity.this,“出错了!”,Toast.LENGTH\u SHORT.show();
startActivity(新意图(AddStoryActivity.this,MainActivity.class));
完成();
}
*/
if(resultCode==RESULT\u OK&&requestCode==CropImage.CROP\u IMAGE\u ACTIVITY\u REQUEST\u CODE){
//意向意向=新意向(AddStoryActivity.this、DsPhotoEditorActivity.class);
//intent.setData(mImageUrl);
//intent.putExtra(DsPhotoEditorConstants.DS_PHOTO_EDITOR_OUTPUT_目录,“Images”);
//intent.putExtra(DsPhotoEditorConstants.DS_工具_条_背景_颜色,COLOR.parseColor(“#FF6200EE”);
//intent.putExtra(DsPhotoEditorConstants.DS_MAIN_BACKGROUND_COLOR,COLOR.parseColor(“#ffffffff”);
//intent.putExtra(DsPhotoEditorConstants.DS_PHOTO_EDITOR_TOOLS_TO_HIDE,new int[]{DsPhotoEditorActivity.TOOL_warm,DsPhotoEditorActivity.TOOL_PIXELATE});
//星触觉(意向);
开关(请求代码){
案例200:
mImageUrl=data.getData();
意向意向=新意向(AddStoryActivity.this、DsPhotoEditorActivity.class);
intent.setData(mImageUrl);
intent.setData(mImageUrl);
intent.putExtra(DsPhotoEditorConstants.DS_PHOTO_EDITOR_OUTPUT_目录,“Images”);
intent.putExtra(DsPhotoEditorConstants.DS_工具_条_背景_颜色,COLOR.parseColor(“#FF6200EE”);
意图