[Guide/MOD] Turning on Answering Machine [KK .230]

batrian

Senior Member
Feb 22, 2013
196
65
0
Toronto
I was going through phone and realized Answering Machine is hidden in the system. With this you can turn on the answering machine.

Requirments :

Simple knowledge of Compiling/ Decompiling.


How to:

1. Decompile Semcphone.apk ------> its in System / PRIV-App / Semcphone.apk

2. After Decompile > Go to > res > values > open bools

3. Search for the line:
<bool name="config_enable_answering_machine">false</bool>
4. Just change the false to true


5. Then go to res > xml > open somc_answering_machine_greetings_setting
in the line:
<PreferenceScreen android:persistent="false"
android:title="@string/phone_strings_ans_mach_greeting_record_new_txt" android:key="key_am_record_new_greeting">
6.Change the false to true

7. last one! Open somc_answering_machine_setting

in the lines:
<CheckBoxPreference android:title="@string/phone_strings_ans_mach_enable_answering_machine_title_txt" android:key="key_am_enabled" />
<Preference android:persistent="false" android:title="@string/phone_strings_ans_mach_auto_answer_time_title_txt" android:key="key_am_activation_sec" />
<CheckBoxPreference android:title="@string/phone_strings_ans_mach_roaming_title_txt" android:key="key_am_use_while_roaming" android:summary="@string/phone_strings_ans_mach_roaming_sub_txt" />
<PreferenceScreen android:persistent="false" android:title="@string/phone_strings_ans_mach_greetings_title_txt" android:key="key_am_greetings">
<intent android:targetPackage="com.android.phone" android:action="android.intent.action.MAIN" android:targetClass="com.android.phone.am.SomcAmGreetingsSetting" />
</PreferenceScreen>
<PreferenceScreen android:persistent="false" android:title="@string/phone_strings_ans_mach_incoming_message_title_txt" android:key="key_am_incoming_msg">
<intent android:targetPackage="com.android.phone" android:action="android.intent.action.MAIN" android:targetClass="com.android.phone.am.SomcAmIncomingMessageSetting" />
</PreferenceScreen>
8. change all the false to true

9. DONE! re-Compile the Semcphone.apk and sign it!


For turning "data disabled" notification :

Go to bools.xml again and look for:

Quote:
<bool name="data_connection_except_mms_show_icon_when_enabled">true</bool>
<bool name="data_connection_except_mms_show_icon_when_disabled">true</bool>

Just change the true to false.


Enjoy :)
PS: Just in case, I have uploaded my own moded Semcphone.apk with Answering Machine and Call Recording enabled.

UPDATE 1 : Found this BUG : the problem is when it goes on answering machine, the greetings plays on the receiver phone's ear speaker, not the one Calling.
For example, if 1 calls 2, the answering greeting plays on 2's phone ear speaker. not on the 1! That's very weird I need to look and see if I can find the solution.

I will update you guys again :)
 

Attachments

Last edited:

batrian

Senior Member
Feb 22, 2013
196
65
0
Toronto
Now i'm getting the bug too!!. the problem is when it goes on answering machine, the greetings plays on the receiver phone's ear speaker, not the one Calling.

For example, if 1 calls 2, the answering greeting plays on 2's phone ear speaker. not on the 1! That's very weird I need to look and see if I can find the problem.

If any one can also help to work this problem out, I really appreciate it :eek:
 
  • Like
Reactions: Ruthx

davros93

Senior Member
Oct 27, 2013
81
23
0
verona
Now i'm getting the bug too!!. the problem is when it goes on answering machine, the greetings plays on the receiver phone's ear speaker, not the one Calling.

For example, if 1 calls 2, the answering greeting plays on 2's phone ear speaker. not on the 1! That's very weird I need to look and see if I can find the problem.

If any one can also help to work this problem out, I really appreciate it :eek:
Yes, this is the problem. I can't help you, i'm not a programmer. Good luck to find the solution. Anyway thank you to find that hidden function!
 

Ticklefish

Recognized Themer
Oct 27, 2011
6,741
8,526
263
Hampshire, UK
You beat me to it..I was about to start a thread about the same sort of thing. :laugh:

How would you like a screenshot?



Y'know, there's more fun things you can do with the bools.xml file. You can turn off the 'data connection' notification as well... :D
 
Last edited:
  • Like
Reactions: batrian

batrian

Senior Member
Feb 22, 2013
196
65
0
Toronto
You beat me to it..I was about to start a thread about the same sort of thing. :laugh:

How would you like a screenshot?



Y'know, there's more fun things you can do with the bools.xml file. You can turn off the 'data connection' notification as well... :D
Haha, Yeah there are lots of them and yes finally I could get rid of that stupid notification too :D

But Answering Machine is not working well yet. Im looking for the solution to make it fully operational.

Thanks for the Screenshot too!
 

totzkitotz

Senior Member
Dec 6, 2013
591
186
0
DAUiSneyland
Haha, Yeah there are lots of them and yes finally I could get rid of that stupid notification too :D

But Answering Machine is not working well yet. Im looking for the solution to make it fully operational.

Thanks for the Screenshot too!
Maybe you can also share it sir..i also want to get rid of that notification :D
 

AngelBob

Senior Member
Jun 23, 2013
275
628
0
The only change needed to enable Answering Machine is
Code:
<bool name="config_enable_answering_machine">ture</bool>
You can actually do this in the /system/vendor/overlay/SemcPhone-Overlay-285.apk
Just create bools.xml and add
Code:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="enable_call_recording">true</bool>
    <bool name="config_enable_answering_machine">true</bool>
</resources>
This was it works on odex roms too.

(Still Audio is routed wrong though)

I also got this from logcat:
Code:
D/StatusBar.NetworkController( 1386): refreshViews: Data not connected!! Set no data type icon / Roaming

E/MediaPlayer-JNI( 1622): QCMediaPlayer mediaplayer NOT present

I/ExtendedUtils(  350): AV Sync late margin : Intended=40ms Using=0ms

D/AwesomePlayer(  350): Before reset_l

D/AwesomePlayer(  350): printFileName fd(37) -> /data/data/com.android.phone/files/am/greeting/2014-05-25-00-03-13.amr

D/ExtendedUtils(  350): extended extractor not needed, return default

W/Settings( 2849): Setting airplane_mode_on has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value.

E/AwesomePlayer(  350): LPAPlayer::Clip duration setting of less than 30sec not supported, defaulting to 60sec

E/AwesomePlayer(  350): LPAPlayer::Clip duration setting of less than 30sec not supported, defaulting to 60sec

E/AudioPolicyManagerALSA(  350): unknown stream type

E/AudioPolicyManagerALSA(  350): unknown stream type

E/AudioPolicyManagerALSA(  350): unknown stream type

E/AudioPolicyManagerALSA(  350): unknown stream type

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

E/AudioPolicyManagerALSA(  350): unknown stream type

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/ALSADevice(  350): route: devices 0x1 in mode 2

V/ALSADevice(  350): switchDevice: device 0x1 mode:2

V/ALSADevice(  350): callOutputRouting: 0x1

V/ALSADevice(  350): Routing to rx=Voice Earpiece EQ1

V/ALSADevice(  350): callInputRouting: 0x1

V/ALSADevice(  350): Routing to tx=DMIC Endfire

V/ALSADevice(  350): switchDevice,rxDev:Voice Earpiece EQ1, txDev:DMIC Endfire, curRxDev:Voice Earpiece EQ1, curTxDev:DMIC Endfire

D/alsa_ucm(  350): snd_use_case_set(): uc_mgr 0xb8e5f808 identifier _enadev value Voice Earpiece EQ1

D/alsa_ucm(  350): Set mixer controls for Voice Call enable 1

D/alsa_ucm(  350): Setting mixer control: STUB_RX Mixer Voice Stub, value: 1

D/alsa_ucm(  350): Setting mixer control: Voice Stub Tx Mixer STUB_TX_HL, value: 1

D/alsa_ucm(  350): Setting mixer control: Voice Stub Tx Mixer STUB_1_TX_HL, value: 1

D/alsa_ucm(  350): snd_use_case_set(): uc_mgr 0xb8e5f808 identifier _enadev value DMIC Endfire

D/alsa_ucm(  350): Set mixer controls for Voice Call enable 1

D/alsa_ucm(  350): Setting mixer control: STUB_RX Mixer Voice Stub, value: 1

D/alsa_ucm(  350): Setting mixer control: Voice Stub Tx Mixer STUB_TX_HL, value: 1

D/alsa_ucm(  350): Setting mixer control: Voice Stub Tx Mixer STUB_1_TX_HL, value: 1

D/ALSADevice(  350): switchDevice: mCurTxUCMDevivce DMIC Endfire mCurRxDevDevice Voice Earpiece EQ1

D/alsa_ucm(  350): snd_use_case_set(): uc_mgr 0xb8e5f808 identifier _enamod value Play Music

D/alsa_ucm(  350): Set mixer controls for Play Music enable 1

D/alsa_ucm(  350): Setting mixer control: SLIMBUS_0_RX Audio Mixer MultiMedia1, value: 1

D/ALSADevice(  350): close: handle 0xb8e58a00 h 0x0

D/ALSADevice(  350): open: handle 0xb8e58a00, format 0x2

V/ALSADevice(  350): Music case

D/ALSADevice(  350): Device value returned is hw:0,0

V/ALSADevice(  350): flags 0, devName hw:0,0

V/ALSADevice(  350): pcm_open returned fd 39

D/ALSADevice(  350): handle->format: 0x2

D/ALSADevice(  350): setHardwareParams: reqBuffSize 2048 channels 2 sampleRate 48000

D/ALSADevice(  350): setHardwareParams: buffer_size 16384, period_size 2048, period_cnt 8

E/MediaPlayer-JNI( 1622): QCMediaPlayer mediaplayer NOT present

I/ExtendedUtils(  350): AV Sync late margin : Intended=40ms Using=0ms

D/AwesomePlayer(  350): Before reset_l

D/AwesomePlayer(  350): printFileName fd(41) -> /data/data/com.android.phone/files/am/greeting/2014-05-25-00-03-13.amr

D/ExtendedUtils(  350): extended extractor not needed, return default

E/AwesomePlayer(  350): LPAPlayer::Clip duration setting of less than 30sec not supported, defaulting to 60sec

I/OMXNodeInstance(  350): OMX_FreeBuffer for buffer header 0xb8f623a8 successful

I/OMXNodeInstance(  350): OMX_FreeBuffer for buffer header 0xb8f622f0 successful

I/OMXNodeInstance(  350): OMX_FreeBuffer for buffer header 0xb8fb8ac0 successful

I/OMXNodeInstance(  350): OMX_FreeBuffer for buffer header 0xb8fb8970 successful

I/OMXNodeInstance(  350): OMX_FreeBuffer for buffer header 0xb8fbf320 successful

I/OMXNodeInstance(  350): OMX_FreeBuffer for buffer header 0xb8fbf1e0 successful

I/OMXNodeInstance(  350): OMX_FreeBuffer for buffer header 0xb9108ac0 successful

I/OMXNodeInstance(  350): OMX_FreeBuffer for buffer header 0xb91088b0 successful

E/MediaPlayer( 1622): Should have subtitle controller already set

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

W/MediaPlayer( 1622): mediaplayer went away with unhandled events

W/MediaPlayer( 1622): mediaplayer went away with unhandled events

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266

D/AudioTrack(  350): latency() mLatency = 266, newLatency = 266
 
Last edited:
  • Like
Reactions: shoey63 and batrian

AngelBob

Senior Member
Jun 23, 2013
275
628
0
After further investigation, to get audio routed correctly will require framework changes.
Sony added a custom Audio Route to the z2
Code:
STREAM_INCALL_MUSIC
This and all relevant code is missing from the yuga framework