Отправка MMS с использованием httpConnection - добавление изображения в PDU
Я смог отправить MMS, используя образец кода DK, отсюда и здесь. Я хотел бы поместить изображение в класс MMSPart. Я думаю, что mimetype будет "image/jpeg" (поправьте меня, если я полностью обеспокоен этим), но как мне поместить изображение в параметр Data - нужно ли мне прочитать изображение в fileInputStream или bitmapfactory и установить значение.Data к нему?
ОБНОВЛЕНИЕ - попробовал код Асахи, и я думаю, что становлюсь ближе, но теперь я получаю ошибку нехватки памяти. Вот информация из журнала.
- в первую очередь это--
Out of memory on a 3602732-byte allocation.
- тогда это--
Uncaught handler: thread main exiting due to uncaught exception
java.lang.OutOfMemoryError
at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:85)
at java.lang.StringBuilder.<init>(StringBuilder.java:69)
at java.util.Arrays.toString(Arrays.java:2659)
at com.market.mmsapp.HttpUtils.httpConnection(HttpUtils.java:88)
at com.market.mmsapp.slimMmsActivity.UploadFile(slimMmsActivity.java:132)
at com.market.mmsapp.slimMmsActivity.onCreate(slimMmsActivity.java:46)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
at android.app.ActivityThread.access$2100(ActivityThread.java:116)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4203)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
at dalvik.system.NativeStart.main(Native Method)
Спасибо за любую помощь.
1 ответ
Решение
Вы можете сделать что-то вроде этого:
ByteArrayOutputStream os = new ByteArrayOutputStream();
Bitmap b = Media.getBitmap(getContentResolver(), bitmapUri);
b.compress(CompressFormat.JPEG, 90, os);
mmsPart.Name = fileName;
mmsPart.MimeType = "image/jpeg";
mmsPart.Data = os.toByteArray();