Android chat application emoji's issue

我与影子孤独终老i 提交于 2019-12-11 10:09:18

问题


I am working on Android chat application. Now I want to send emoji's in my chat module. How can i implement emoji' in chat application? Please guide me for this app. If there is any API for this app then also suggest me. Thanks

  public void callAsynchronousTask() {
    final Handler handler = new Handler();
    timer = new Timer();
    TimerTask doAsynchronousTask = new TimerTask() {
        @Override
        public void run() {
            handler.post(new Runnable() {
                public void run() {
                    try {
                        new GetSingleChat(Chat_Detail_Single.this).execute(friend_id);

                    } catch (NullPointerException e) {

                    }
                }
            });

        }
    };
    timer.schedule(doAsynchronousTask, 1000, 1000);

} 

@Override
public void onClick(View v) {

    switch (v.getId()) {
        case R.id.btncamera:
            Dialog_Manager.chooseImage(Chat_Detail_Single.this, "singlechat");
            break;
        case R.id.img_back:
            timer.cancel();
            finish();
            break;
        case R.id.btnsend:
            String message_ = edt_mes.getText().toString();
            if (message_.replace(" ", "").length() == 0) {

            } else {
                edt_mes.setText("");
                new  Send_chat_message(Chat_Detail_Single.this).execute(SharedPref.getUserID(this), friend_id, "mes", message_);

            }
            break;

    }
} 
      public static void get_chat_data(List<Chat_prop> fetch_chat) {
    MyCustomList.clear();
    MyCustomList.addAll(fetch_chat);

    try {
        if (adptor == null) {

            adptor = new Single_Chat_Adap(activity,
                    MyCustomList);
            Chat_Detail_Single.listView.setAdapter(adptor);
            Chat_Detail_Single.listView.setSelection(MyCustomList
                    .size() - 1);
            lastCount = MyCustomList.size();
        } else {

            if (lastCount != MyCustomList.size()) {
                lastCount = MyCustomList.size();
                adptor.notifyDataSetChanged();
                Chat_Detail_Single.listView
                        .setSelection(MyCustomList.size());

            }


        }
    } catch (NullPointerException e) {

    } catch (Exception e) {
        // TODO: handle exception
    }

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

    try {

        if (requestCode == Dialog_Manager.Gallery_Intent
                && resultCode == RESULT_OK && data != null) {

            File direct = new File(
                    Environment.getExternalStorageDirectory() + "/Fun You");
            if (!direct.exists()) {
                if (direct.mkdir())
                    ;
            }
            long time = System.currentTimeMillis();
            capturepath1 = direct.getAbsolutePath() + "/" + time + ".jpg";
            File file = new File(capturepath1);
            Uri outputFileUri = Uri.fromFile(file);
            Uri selectedImage = data.getData();
            imagePath = getPath(selectedImage);
            Intent cropIntent = new Intent("com.android.camera.action.CROP");
            Uri contentUri = selectedImage;
            cropIntent.setDataAndType(contentUri, "image/*");
            cropIntent.putExtra("crop", "true");
            cropIntent.putExtra("aspectX", 1);
            cropIntent.putExtra("aspectY", 1);
            cropIntent.putExtra("outputX", 1000);
            cropIntent.putExtra("outputY", 1000);
            cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
            cropIntent.putExtra("return-data", true);
            startActivityForResult(cropIntent, 3);

        } else if (requestCode == Dialog_Manager.Camera_Intent
                && resultCode == RESULT_OK) {

            File direct = new File(
                    Environment.getExternalStorageDirectory() + "/Fun You");
            if (!direct.exists()) {
                if (direct.mkdir())
                    ;
            }
            long time = System.currentTimeMillis();
            capturepath1 = direct.getAbsolutePath() + "/" + time + ".jpg";
            File file = new File(capturepath1);
            Uri outputFileUri = Uri.fromFile(file);
            File photos = new File(imagePath);
            Uri selectedImage = Uri.fromFile(photos);
            Intent cropIntent = new Intent("com.android.camera.action.CROP");
            Uri contentUri = selectedImage;
            cropIntent.setDataAndType(contentUri, "image/*");
            cropIntent.putExtra("crop", "true");
            cropIntent.putExtra("aspectX", 1);
            cropIntent.putExtra("aspectY", 1);
            cropIntent.putExtra("outputX", 1000);
            cropIntent.putExtra("outputY", 1000);
            cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
            cropIntent.putExtra("return-data", true);
            startActivityForResult(cropIntent, 3);

        } else if (requestCode == 3) {
            try {
                Bitmap thumbnail = null;
                Bundle extras = data.getExtras();
                if (extras != null) {
                    thumbnail = extras.getParcelable("data");
                    Bitmap bm = thumbnail;
                    bm = ExtraMethods.decodeFile(capturepath1);
                    bm = ExifUtils.rotateBitmap(capturepath1, bm);
                    // new Uplaod_image().execute(capturepath1);
                    new Send_chat_message(Chat_Detail_Single.this).execute(SharedPref.getUserID(this), friend_id, "image", capturepath1);
                }

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } catch (Exception e) {
        Toast.makeText(getApplicationContext(), e + "", Toast.LENGTH_LONG)
                .show();
    }

}
 public String getPath(Uri uri) {
    if (uri == null) {
        return null;
    }
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = getContentResolver().query(uri, projection, null, null,
            null);
    if (cursor != null) {
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }
    return uri.getPath();
}

回答1:


There is no specific api available to implement and send emojis. You can achieve this using ImageSpan objects. The TextViews and EditTexts use Spanned/Spannable objects to store the entered text content, not just mere Java Strings. On these Spanned/Spannable objects you can define spans for sections on the text that modifies the way that those sections are shown. So you can display images in place of certain sections.

Check the docs:

Also, I found a blog, it might be helpful for you.




回答2:


This Library is all you need to implement Emojicons. Just don't forget to change your TextViews and EditTexts to this Library's EmojiconTextViews and EmojiconEditTexts respectively.

Hope this helps.




回答3:


You need to encode emoji before upload. in this way you encode emoji to UTF code

try {
                String mystring = URLEncoder.encode(strComments, HTTP.UTF_8);
                param.add(new BasicNameValuePair("comment", mystring));

            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

for decoding

enter code here


try {
            String Title = URLDecoder.decode(comment, "UTF-8");
            holder.tvComment.setText(Title);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }


来源:https://stackoverflow.com/questions/34736844/android-chat-application-emojis-issue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!