1

Я работаю над приложением Android чата. Теперь я хочу отправить emoji в мой модуль чата. Как я могу реализовать emoji в приложении чата? Пожалуйста, направляйте меня для этого приложения. Если для этого приложения есть API, то также предлагайте мне. СпасибоПроблема с чатом для Android emoji's

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(); 
} 
+0

Просто некоторое время назад ответил здесь это должно помочь вам, вопрос автор также упомянул библиотека тоже – Veer3383

ответ

0

Существует нет конкретных api доступных для реализации и отправки emojis. Вы можете достичь этого, используя объекты ImageSpan. TextViews и EditTexts используют объекты Spanned/Spannable для хранения введенного текстового содержимого, а не только Java-строк. На этих объектах Spanned/Spannable вы можете определять интервалы для разделов текста, которые изменяют способ отображения этих разделов. Таким образом, вы можете отображать изображения вместо определенных разделов.

Проверить docs:

Кроме того, я нашел blog, это может быть полезно для вас.

+0

Благодаря хорошо я проверю –

+0

повышать и принимать ответ, если информация вам полезна. :) –

0

This Library - все, что вам нужно для реализации Emojicons. Просто не забудьте изменить TextView s и EditText s на эту библиотеку EmojiconTextView s и EmojiconEditText s соответственно.

Надеюсь, это поможет.

+0

Спасибо, что я могу добавить эту библиотеку в свой projoect, используя amroid studio. –

+0

Загрузите эту библиотеку и импортируйте ее в Android Studio в качестве модуля. Затем в файле build.gradle вашего проекта, добавить зависимость, как это .. 'зависимостей { проект компиляции («:») ImportedProjectName }' – Mann

+0

его, показывая ошибку во время модуля импорта, который - Укажите расположение Gradle или андроида Проект Eclipse –

0

Перед загрузкой необходимо кодировать emoji. таким образом кодировать смайлик в UTF код

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

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

для декодирования

enter code here 


try { 
      String Title = URLDecoder.decode(comment, "UTF-8"); 
      holder.tvComment.setText(Title); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } 
Смежные вопросы