Попробуйте это:
AudioManager mAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
IntentFilter iFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
Intent iStatus = getApplicationContext().registerReceiver(null, iFilter);
boolean isHeadsetOn = false;
if (iStatus != null) {
isHeadsetOn = iStatus.getIntExtra("state", 0) == 1;
}
if(mAudioManager.isWiredHeadsetOn() || isHeadsetOn)
{
//When headphones are plugged
mAudioManager.setMode(AudioManager.MODE_CURRENT);
mAudioManager.setSpeakerphoneOn(true);
}else {
//When headphones are not plugged
mAudioManager.setMode(AudioManager.MODE_IN_CALL);
mAudioManager.setSpeakerphoneOn(true);
}
Проверьте эту ссылку .
Вы можете написать оболочку C или C ++ вокруг XPCOM, а затем использовать эту оболочку в Delphi.
Также есть открытая источник Обертка XPCOM, написанная на Delphi . Возможно, вы тоже захотите это проверить. Спасибо Stijn за указание на это.
Надеюсь, это поможет.
Вы также можете самостоятельно проанализировать файлы почтового ящика Thunderbird.
% APPDATA% \ Thunderbird \ profiles.ini
прочтите, где находится папка профиля (если есть еще чем один профиль, просмотрите разделы Профиль
0 .. Профиль
n для того, который имеет значение По умолчанию = 1
) Mail
и / или ImapMail
подпапки профиля представляет учетную запись ( Mail
содержит учетные записи POP, ImapMail
содержит Учетные записи IMAP); From
», указывает на новое сообщение. Используйте заголовок X-Mozilla-Status
, чтобы выяснить, действительно ли сообщение по-прежнему или было помечено для удаления. (Вы можете использовать COM-объект CDO.Message
для синтаксического анализа сообщения за вас, если хотите.) Вы должны выполнить рекурсию для каждой подпапки, заканчивающейся на '.sbd', поскольку она будет содержать этот почтовый ящик вложенные папки (например, Inbox.sbd
будет содержать почтовые папки в папке «Входящие»).
Однако будьте осторожны с проблемами блокировки файлов.