2016-10-24 5 views
1

채팅 응용 프로그램을 만들고 있지만 smack API를 사용하는 openfire 서버에서 사용자 아바타를 설정하는 방법을 이해할 수 없습니다. 아래의 코드는 사용자 아바타를 설정하는 것입니다.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

관련 문제