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();
}
}
}
제발 도와주세요.
Thaks. 나는 이것을 시도했지만 그것은 내 프로젝트에서 작동하지 않는다. 서버에 이미지가 없습니다. 난 비트 맵 개체를 가지고 바이트로 내 비트 맵 개체를 변환 할 때 아바타는 openfire 서버에 설정되지 않습니다. 미리 감사드립니다 –
이미지를 비트 맵으로 변환하지 말고 bytes.just 이미지의 경로를 설정하십시오. – dipali