2016-10-24 8 views
1

Я создаю приложение чата, но я не мог понять, как установить аватар пользователя на сервере openfire с помощью smack api. Я - приведенный ниже код, чтобы установить аватар пользователя.Как установить аватар пользователя на пользователя openfire smack api

public boolean changeImage(File file) { 
    if (mConnection == null) 
     return false; 
    try { 
     VCard vcard = new VCard(); 

     String userJID = prefs.getString(Prefrences.xmpp_jid, null); 

     System.out.println("user:- "+userJID); 

     vcard.load(mConnection, userJID); 

     byte[] bytes; 

     bytes = getFileBytes(file); 
     String encodedImage = StringUtils.encodeHex(bytes); 
     vcard.setAvatar(bytes, encodedImage); 
     vcard.setEncodedImage(encodedImage); 
     vcard.setField("PHOTO", "<TYPE>image/jpg</TYPE><BINVAL>" 
       + encodedImage + "</BINVAL>", true); 

     System.out.println("Encoded image "+encodedImage); 
     System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++"); 

     ByteArrayInputStream bais = new ByteArrayInputStream(
       vcard.getAvatar()); 
     FormatTools.getInstance().InputStream2Bitmap(bais); 

     vcard.save(mConnection); 
     return true; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 
} 

/** 
* File to byte 
* 
* @param file 
* @return 
* @throws java.io.IOException 
*/ 
private byte[] getFileBytes(File file) throws IOException { 
    BufferedInputStream bis = null; 
    try { 
     bis = new BufferedInputStream(new FileInputStream(file)); 
     int bytes = (int) file.length(); 
     byte[] buffer = new byte[bytes]; 
     int readBytes = bis.read(buffer); 
     if (readBytes != buffer.length) { 
      throw new IOException("Entire file not read"); 
     } 
     return buffer; 
    } finally { 
     if (bis != null) { 
      bis.close(); 
     } 
    } 
} 

Пожалуйста, помогите.

ответ

0

использовать этот код: это может быть полезно для вас :)

private void loadVCard(XMPPConnection conn, String username) { 
    VCard vcard = new VCard(); 

    //ProviderManager.addIQProvider("vCard", "vcard-temp", new VCardProvider()); 



    vcard.load(conn, username); 


    vcard.setFirstName("" + username); 
    vcard.setEmailHome("" + email); 
    vcard.setMiddleName("" + middleName); 
    vcard.setNickName("" + nickName); 
    vcard.setPhoneHome("Voice", "" + phoneNumber); 
    vcard.setLastName("" + lastName); 
    vcard.setOrganization("" + orginiZation); 
    vcard.setAvatar("" + image_path); //Image Path should be URL or Can be Byte Array etc. 


     vcard.save(conn); 

} 
+0

Thaks для вашего ответа. Я пробовал это, но он не работает в моем проекте. У меня нет изображения на сервере. У меня есть только растровый объект, и когда я конвертирую свой объект растрового изображения в байтах, аватар не установлен на сервере openfire. Заранее спасибо –

+0

не конвертировать изображение в растровое изображение, а затем bytes.just установить путь изображения – dipali

 Смежные вопросы

  • Нет связанных вопросов^_^