Related
I recently started trying to complete a phone call recorder for the Nexus One running FroYo, but I've been having trouble getting the audio source to work correctly.
Using MediaRecorder.setAudioSource with MediaRecorder.AudioSource.VOICE_CALL results in a 0 kb file.
MediaRecorder.AudioSource.VOICE_DOWNLINK and MediaRecorder.AudioSource.VOICE_UPLINK both only record from the MIC and are therefore no different than MediaRecorder.AudioSource.MIC
Does anyone have any experience working with this part of the API, trying to do something similar? My next step would be to re-work using AudioRecord, but from what I've been reading online no one has had any success with that either.
Any help would be GREATLY appreciated. Thanks in advance!!
-teleknEsis
Googlevoice can do this. I believe you hit the number 4 during a call to start recording and 4 again to stop.
teleknEsis said:
I recently started trying to complete a phone call recorder for the Nexus One running FroYo, but I've been having trouble getting the audio source to work correctly.
Using MediaRecorder.setAudioSource with MediaRecorder.AudioSource.VOICE_CALL results in a 0 kb file.
MediaRecorder.AudioSource.VOICE_DOWNLINK and MediaRecorder.AudioSource.VOICE_UPLINK both only record from the MIC and are therefore no different than MediaRecorder.AudioSource.MIC
Does anyone have any experience working with this part of the API, trying to do something similar? My next step would be to re-work using AudioRecord, but from what I've been reading online no one has had any success with that either.
Any help would be GREATLY appreciated. Thanks in advance!!
-teleknEsis
Click to expand...
Click to collapse
Isn't this illegal?
Geo411m said:
Googlevoice can do this. I believe you hit the number 4 during a call to start recording and 4 again to stop.
Click to expand...
Click to collapse
Well damn, you got me there. Indeed that does work, although it requires someone to call you through your google voice #. I think there's still enough demand out there for a native call recorder that this is still worth investigating a fix.
But thanks for the info!!!!
prettyboy85712 said:
Isn't this illegal?
Click to expand...
Click to collapse
No, actually in my state (Texas) it is not. As long as "1 of the parties is aware it is being recorded" (uhhh myself) it is legal.
The last time this was discussed Dianne Hackborn said that the G1 did not have the hardware for this to happen.
The problem was that the baseband processor did all the work and the raw audio stream was never exposed to Android (yep, including if you use a bluetooth headset, all done by the baseband processor) she said the problem was that qualcomm et al tended to lock up the functionality making such things really hard to do without their co-operation at driver writing time.
I'd guess this still holds for the N1.
Google voice however is just fancy VOIP so that is all done within the kernel hence the audio is easy to get at.
Here's a bit of the thread:
http://www.mail-archive.com/[email protected]/msg06770.html
Geo411m said:
Googlevoice can do this. I believe you hit the number 4 during a call to start recording and 4 again to stop.
Click to expand...
Click to collapse
lmao but it makes everything akward when the voice says its recording. i believe it only works for incoming calls as well
prettyboy85712 said:
Isn't this illegal?
Click to expand...
Click to collapse
this is an international site....just because its illegal where you are doesnt mean it is everywhere.
teleknEsis said:
No, actually in my state (Texas) it is not. As long as "1 of the parties is aware it is being recorded" (uhhh myself) it is legal.
Click to expand...
Click to collapse
finally i have a right to do something in texas besides own a gun
man, i really wish there was an app for this (besides google voice) =/
I have been trying to find an app that takes this one step further, and can be used as a voicemail service.
Here in Australia we have to pay for the call diversion to carrier provided voicemail, then pay to retrieve the message.
If the phone answered the call and recorded the message it would eliminate the need for carrier voicemail.
Recording calls will be great if you can make it work, but reading other posts it seems it may not be possible.
flybyme said:
lmao but it makes everything akward when the voice says its recording. i believe it only works for incoming calls as well
this is an international site....just because its illegal where you are doesnt mean it is everywhere.
finally i have a right to do something in texas besides own a gun
Click to expand...
Click to collapse
Points well made, remember though an app to be issued on this site, might be unlawful since the servers are located in the USA.
As too anyone interested in the state laws for recording a conversation per state:
http://www.rcfp.org/taping/quick.html
Remember one thing also, the reason Google removed all the recording apps off the market is because they didn't want to be responsible for the actions.
Google voice records a conversation after it notifies the caller on the other end of the call.
Just an fyi too you all.
Mikey1022 said:
Remember one thing also, the reason Google removed all the recording apps off the market is because they didn't want to be responsible for the actions.
Click to expand...
Click to collapse
Wow I didn't realize they pulled them off the market lol
I thought that was because I couldnt see all the protected apps
SilentMobius said:
The last time this was discussed Dianne Hackborn said that the G1 did not have the hardware for this to happen.
The problem was that the baseband processor did all the work and the raw audio stream was never exposed to Android (yep, including if you use a bluetooth headset, all done by the baseband processor) she said the problem was that qualcomm et al tended to lock up the functionality making such things really hard to do without their co-operation at driver writing time.
I'd guess this still holds for the N1.
Google voice however is just fancy VOIP so that is all done within the kernel hence the audio is easy to get at.
Here's a bit of the thread:
http://www.mail-archive.com/[email protected]/msg06770.html
Click to expand...
Click to collapse
Very interesting, and that would certainly explain the limitations of the API on the Nexus One. I really wish there was some way around this.
Mikey1022 said:
Remember one thing also, the reason Google removed all the recording apps off the market is because they didn't want to be responsible for the actions.
.
Click to expand...
Click to collapse
Could you provide a link to back that assertion up? as I said I don't believe there have been any actual call-recording apps on the market, due to technical limitations, just normal recording apps that could be used to (poorly) record a call. And I don't believe any of those have been pulled.
Personally IMHO the notion that you can't record something you hear is nonsense. Thankfully I don't live in a country where this is so.
If you have a SIP account (or VOIP), you can download the app 3cxPhone from Android Market and in the Settings there is an option to record all calls.
I have tested it and it works perfectly. Both parties are recorded loud and clear unlike most of the old call recorders on the Market where you could barely hear the other party. I think it has something to do with SIP apps, like Sipdroid and 3cxPhone, calls function as Media files rather than phone calls on Android, allowing the recording of both sides of the call equally.
Anyway, the recorded call auto saves as a .wav file on your sd card under /3cxPhone/recordings.
Use your Google Voice number as a SIP account. Substitute 3cxPhone for Sipdroid in the tutorial... http://androidforums.com/android-lo...-your-android-phone-free-us-canada-calls.html
There's also trick you can do to record all in and out calls with 2 Google Voice accounts, one of the GV callback apps in Market, a MagicJack, and your regular phone calling plan (not Sipdroid or 3cxPhone).
Long tutorial short...
-you set up your MagicJack number as a forwarding number on GV line 1.
-Then, after its registered, go into the MJ login page and auto-forward all calls to your GV line 2 number. You can put your MJ in a drawer and never plug it in again after that.
-in the Android GV callback app, login with GV line 1. In the Settings, change the "This Phone's number" to the MagicJack number. Make sure your GV line 1 does not forward to your cell phone. Check desktop GV Settings to be sure.
-in GV line 2's Desktop version, make a new Contact with GV line 1's number. Name it whatever you want. In the Settings for that Contact, make all calls ring your Mobile number. Turn off all Call Screening or Call Presentation for that Contact, meaning calls just go through without options to reject or send to VM.
-Finally, to make calls, in the GV callback Android app, enter a number or choose a contact to call. It will call you back on your MJ number, which happens to forward to your GV Line 2 number....which is getting an incoming call(calling your cell), which means you can just push the number 4 as soon as you pick up the callback to start recording.
Your outgoing Caller ID will be GV Line 1 but your recordings will show up in GV Line 2.
The end
agriff said:
If you have a SIP account (or VOIP), you can download the app 3cxPhone from Android Market and in the Settings there is an option to record all calls.
I have tested it and it works perfectly. Both parties are recorded loud and clear unlike most of the old call recorders on the Market where you could barely hear the other party. I think it has something to do with SIP apps, like Sipdroid and 3cxPhone, calls function as Media files rather than phone calls on Android, allowing the recording of both sides of the call equally.
Anyway, the recorded call auto saves as a .wav file on your sd card under /3cxPhone/recordings.
Use your Google Voice number as a SIP account. Substitute 3cxPhone for Sipdroid in the tutorial... http://androidforums.com/android-lo...-your-android-phone-free-us-canada-calls.html
There's also trick you can do to record all in and out calls with 2 Google Voice accounts, one of the GV callback apps in Market, a MagicJack, and your regular phone calling plan (not Sipdroid or 3cxPhone).
Long tutorial short...
-you set up your MagicJack number as a forwarding number on GV line 1.
-Then, after its registered, go into the MJ login page and auto-forward all calls to your GV line 2 number. You can put your MJ in a drawer and never plug it in again after that.
-in the Android GV callback app, login with GV line 1. In the Settings, change the "This Phone's number" to the MagicJack number. Make sure your GV line 1 does not forward to your cell phone. Check desktop GV Settings to be sure.
-in GV line 2's Desktop version, make a new Contact with GV line 1's number. Name it whatever you want. In the Settings for that Contact, make all calls ring your Mobile number. Turn off all Call Screening or Call Presentation for that Contact, meaning calls just go through without options to reject or send to VM.
-Finally, to make calls, in the GV callback Android app, enter a number or choose a contact to call. It will call you back on your MJ number, which happens to forward to your GV Line 2 number....which is getting an incoming call(calling your cell), which means you can just push the number 4 as soon as you pick up the callback to start recording.
Your outgoing Caller ID will be GV Line 1 but your recordings will show up in GV Line 2.
The end
Click to expand...
Click to collapse
While i do appreciate these "workarounds", that was not the point of my thread. From what I can tell, there is a large demand out there for a native application that doesn't require using a VOIP service such as Google Voice or any wonky "setups", and records calls directly to the device. None of the apps I have found so far will record both the incoming and outgoing voice stream, and from my testing with the API and what I've read online, it doesn't seem possible to do with the Nexus One.
I'm more or less just looking for input from people who are familiar with this API and have attempted to do something similar. Thanks anyway....
Using total recall with froyo, works fine.
http://www.androlib.com/android.application.com-killermobile-totalrecall-trial-xtDm.aspx
avelec said:
Using total recall with froyo, works fine.
http://www.androlib.com/android.application.com-killermobile-totalrecall-trial-xtDm.aspx
Click to expand...
Click to collapse
I beg to differ. All the files saved are ending up as 0 kb files and of course won't play. Exact same problem I had during testing of my application. My guess is he's using the VOICE_CALL audio source which was leading to that same problem for me.
If it really does work for you, what location do you have set to save the calls and what format are you saving as?
teleknEsis said:
I beg to differ. All the files saved are ending up as 0 kb files and of course won't play. Exact same problem I had during testing of my application. My guess is he's using the VOICE_CALL audio source which was leading to that same problem for me.
If it really does work for you, what location do you have set to save the calls and what format are you saving as?
Click to expand...
Click to collapse
Mine is default to /mnt/sdcard, I'm running [ROM] Kang-o-rama 0.9 Final SP2 (FRF85) w/apps2ext.
Setup to record only incoming call. Hope this helps.
avelec said:
Using total recall with froyo, works fine.
http://www.androlib.com/android.application.com-killermobile-totalrecall-trial-xtDm.aspx
Click to expand...
Click to collapse
Total recall uses microphone too, so did you read the first post ?
WOT this is not any kind of production/everyday app. Lets pursue other options or future releases of this.....
Hi all
Since the update, I have had some problems with making calls with my Google voice number on my idol 3. Everything worked perfect up until the last week.
I have it set to have all calls using GV and also tried to set it to ask for each call. I've tried uninstalling, clear cache, etc but no change. Either way, the calls go through but the person I'm calling sees my carrier number (which no one knows), meaning that the calls are going through the carrier line instead of GV.
Anyone else experiencing this? Any suggestions for getting GV working properly again? I've not had a problem like this with GV on any phones/versions before
Thanks!
Sent from my 6045I using XDA Free mobile app
Seems third party dialers aren't working as expected either. Thought I would try another dialer to see if that would work around this but that is just opening the stock dialer...
Anyone know if a reset of the phone will roll back the update?
Sent from my 6045I using XDA Free mobile app
I'm having the same problem. I can even set google voice to ask each time and I get prompted to use voice or the phone but it doesn't matter what I select. All calls go through the phone instead of voice.
Similar issue, though I can get my GV number to work if I dial with Hangouts Dialer.
Yeah, mine works if I use Hangouts dialer also.... But that uses data, not minutes. I happen to be on an unlimited data plan, so should be OK for me for now.
Any ideas on how to submit a bug to Alcatel?
Sent from my 6045I using XDA Free mobile app
I can reproduce this. It's annoying.
As for submit bug:
http://www.alcatelonetouch.us/info/Support
mightymags said:
Any ideas on how to submit a bug to Alcatel?
Click to expand...
Click to collapse
This is the subject of a thread over on the Google+ Idol 3 group. An Alcatel rep says the company is looking into the situation. I agree it needs resolving.
Sent from my BLU LIFE ONE using Tapatalk
andyadler said:
This is the subject of a thread over on the Google+ Idol 3 group. An Alcatel rep says the company is looking into the situation. I agree it needs resolving.
Sent from my BLU LIFE ONE using Tapatalk
Click to expand...
Click to collapse
Depending on your rom version the system image thread has several "early" firmware versions now (especially for the 6045i) where you can see if it reverts the issue.
http://forum.xda-developers.com/idol-3/general/want-to-able-to-install-ota-updates-t3163745
Same problem here. Glad I have another phone that works because my GV number is my work number. I had a few people answer and say they didn't know I had this number because it wasn't showing my GV number.
alnova1 said:
Same problem here. Glad I have another phone that works because my GV number is my work number. I had a few people answer and say they didn't know I had this number because it wasn't showing my GV number.
Click to expand...
Click to collapse
Why not use "hangouts dialer" as last I heard it still worked?
famewolf said:
Why not use "hangouts dialer" as last I heard it still worked?
Click to expand...
Click to collapse
While that does work (and is good enough for me personally), the problem with that is that it uses data instead of cellular minutes. So anyone who makes enough outgoing calls and doesn't have a lot of data in their cell plan may end up going over their limit.
Sent from my 6045I using XDA Free mobile app
i installed truedialer which does not work correctly (cant answer incoming calls) so uninstalled but weirdly now google voice works when i dial out it asks to call with gv and if yes shows the proper caller id
zaq123 said:
i installed truedialer which does not work correctly (cant answer incoming calls) so uninstalled but weirdly now google voice works when i dial out it asks to call with gv and if yes shows the proper caller id
Click to expand...
Click to collapse
Did you install the stagefright patch released this week? That fixed Google Voice.
I did which did not fix my Google voice. After I installed truedialer because I was looking for a dialer that the smart feature also search's recent calls but it messed up incoming calls, so I uninstalled, then gv started working
zaq123 said:
I did which did not fix my Google voice. After I installed truedialer because I was looking for a dialer that the smart feature also search's recent calls but it messed up incoming calls, so I uninstalled, then gv started working
Click to expand...
Click to collapse
Try rocketdialer with truecaller (caller id only).
Is there a dialer app that can natively reject/block unwanted calls on a G3?
MrTooPhone said:
Is there a dialer app that can natively reject/block unwanted calls on a G3?
Click to expand...
Click to collapse
Actually, the default dialer will do that already but it's not called call block or anything like that... well, sort of... Open your Contacts app, find the contact you want to block and open it, then clock Edit (pencil icon), then tap the 3 dots menu and tick "All calls to voicemail", this will send any call from that contact immediately to voicemail, which is what will happen if a caller is blocked at the phone level anyway.
acejavelin said:
Actually, the default dialer will do that already but it's not called call block or anything like that... well, sort of... Open your Contacts app, find the contact you want to block and open it, then clock Edit (pencil icon), then tap the 3 dots menu and tick "All calls to voicemail", this will send any call from that contact immediately to voicemail, which is what will happen if a caller is blocked at the phone level anyway.
Click to expand...
Click to collapse
So there is no true call block or reject in Android? By blocking, I mean no connection, no voicemail, no SMS or MMS. Maybe I was fooled by my old Gingerbread dialer.
MrTooPhone said:
So there is no true call block or reject in Android? By blocking, I mean no connection, no voicemail, no SMS or MMS. Maybe I was fooled by my old Gingerbread dialer.
Click to expand...
Click to collapse
Not to my knowledge... it would have to actually answer and disconnect to do that. The most likely case here is that it would send a reject message to the cellular provider when the call is presented to it, instead of a trying or ringing message, which would then route it to the default Call Foward No Answer point.
If you did not have voicemail, or had your call forwarding disabled, the call would get a busy signal, but you couldn't do that on a call by call basis.
You can use the new google dialer which come with that option, you can get it on apkmirror...
You can use truecaller. You can choose how calls are blocked. It blocks a list of spammers automatically.
Here's the link.
https://play.google.com/store/apps/details?id=com.truecaller
keb00 said:
You can use the new google dialer which come with that option, you can get it on apkmirror...
Click to expand...
Click to collapse
I saw that when it came out, but never installed. Have you tried the new dialer? Can it coexist with the current dialer without any difficulty?
I assume you are referring to Google Phone 2.05.07_rc4, not Google Phone 3.00.04_rc4?
sanchith.hegde said:
You can use truecaller. You can choose how calls are blocked. It blocks a list of spammers automatically.
Here's the link.
https://play.google.com/store/apps/details?id=com.truecaller
Click to expand...
Click to collapse
Looks interesting. I assume you are a user? I like that it is a dialer as well.
Yes I am a user and am satisfied with it. Go ahead and download it.
MrTooPhone said:
I saw that when it came out, but never installed. Have you tried the new dialer? Can it coexist with the current dialer without any difficulty?
I assume you are referring to Google Phone 2.05.07_rc4, not Google Phone 3.00.04_rc4?
Click to expand...
Click to collapse
Didn't had a problem so far.. I think yes it is the Version 2, because the other is for Nexus and android N
keb00 said:
Didn't had a problem so far.. I think yes it is the Version 2, because the other is for Nexus and android N
Click to expand...
Click to collapse
I did install. Works fine along native/original dialer.
MrTooPhone said:
I did install. Works fine along native/original dialer.
Click to expand...
Click to collapse
Nice to hear that!
keb00 said:
Nice to hear that!
Click to expand...
Click to collapse
I know a little off topic, even though the two dialers work well alongside so far, the new dialer can not answer a call. So there is no way to answer a call if the original dialer is disabled.
acejavelin said:
Not to my knowledge... it would have to actually answer and disconnect to do that. The most likely case here is that it would send a reject message to the cellular provider when the call is presented to it, instead of a trying or ringing message, which would then route it to the default Call Foward No Answer point.
If you did not have voicemail, or had your call forwarding disabled, the call would get a busy signal, but you couldn't do that on a call by call basis.
Click to expand...
Click to collapse
The new Google Dialer provides a way to block calls. I laughed when I set up numbers to block, the app came back and said you still may receive voice messages. So pretty much the same as forwarding calls to voice mail as you originally implied.
MrTooPhone said:
The new Google Dialer provides a way to block calls. I laughed when I set up numbers to block, the app came back and said you still may receive voice messages. So pretty much the same as forwarding calls to voice mail as you originally implied.
Click to expand...
Click to collapse
If you use truecaller it has options: reject automatically or ring silently. It won't send to voicemail.
sanchith.hegde said:
If you use truecaller it has options: reject automatically or ring silently. It won't send to voicemail.
Click to expand...
Click to collapse
I like what I read about True Caller. The only reason I hesitate., it is unclear to me how much privacy is released once I sign up. Even with Google it is a constant battle. One thing I did not like about the new dialer is it wanted to make my cell number discoverable to the web. And to turn that feature off was a deep dive into the Google Control Panel. So what does True Caller do with all my contacts?
MrTooPhone said:
I like what I read about True Caller. The only reason I hesitate., it is unclear to me how much privacy is released once I sign up. Even with Google it is a constant battle. One thing I did not like about the new dialer is it wanted to make my cell number discoverable to the web. And to turn that feature off was a deep dive into the Google Control Panel. So what does True Caller do with all my contacts?
Click to expand...
Click to collapse
For unknown callers it displays their names and if they are reported spam by other users it will automatically reject the call.
It doesn't do anything to your contacts.
If you call another truecaller user he will get to know who is calling.
MrTooPhone said:
I like what I read about True Caller. The only reason I hesitate., it is unclear to me how much privacy is released once I sign up. Even with Google it is a constant battle. One thing I did not like about the new dialer is it wanted to make my cell number discoverable to the web. And to turn that feature off was a deep dive into the Google Control Panel. So what does True Caller do with all my contacts?
Click to expand...
Click to collapse
True caller uses your contacts and display their names when they call up someone who doesn't have their number saved.
keylocker said:
True caller uses your contacts and display their names when they call up someone who doesn't have their number saved.
Click to expand...
Click to collapse
That is what I was thinking, they use the contacts list to better enhance caller ID.
MrTooPhone said:
That is what I was thinking, they use the contacts list to better enhance caller ID.
Click to expand...
Click to collapse
I never in my life would prefer this app. Privacy breach and what not? Once read online that it holds more than a million Indian database. Stay out of it.
The phone app that came on my Phab2 Pro is not Google's and it doesn't seem to have any way to block spam callers. Anybody else have this problem & how can I fix it?
BTW, I tried installing the real phone app (http://www.apkmirror.com/apk/google...gle-phone-7-0-140755802-android-apk-download/) but it fails with the message "Parse error".
I installed the Asus contacts and Dialer from the play store. It does just fine for now.
I use Truecaller app. I googled 'best Call Blocker for android" and Truecaller came up on top of several review list.
strawsy said:
I installed the Asus contacts and Dialer from the play store. It does just fine for now.
Click to expand...
Click to collapse
Using Asus contacts & dialer and, when calls come in, phone rings but no answer screen shows up. I can't answer the call. Ideas?
roebling said:
Using Asus contacts & dialer and, when calls come in, phone rings but no answer screen shows up. I can't answer the call. Ideas?
Click to expand...
Click to collapse
I'm still using it and I have not had any issues. Has it worked at all for you? If so I'd probably Uninstall apps that you've installed since. If not then maybe start with a fresh install and put that on first. Since you have the same phone it has to be an app conflict.
I use Google Voice, I will never give out the phone number that my carrier assigned me. I only give out my Google Voice phone number, you can block callers or mark as spam. I did like one feature that comes with P2P phone app, the ability to record an active call and it will record both sides of the conversation.
user profile said:
I use Google Voice, I will never give out the phone number that my carrier assigned me. I only give out my Google Voice phone number, you can block callers or mark as spam. I did like one feature that comes with P2P phone app, the ability to record an active call and it will record both sides of the conversation.
Click to expand...
Click to collapse
Me too, no problems blocking with Google Voice. Problems with the cell line. Trash marketers programatically continuously dial all possible phone numbers, noting which are activated, without regard to whether or a not lines are cellular. Numbers that are answered progress to stage two, spam calls.
strawsy said:
I'm still using it and I have not had any issues. Has it worked at all for you? If so I'd probably Uninstall apps that you've installed since. If not then maybe start with a fresh install and put that on first. Since you have the same phone it has to be an app conflict.
Click to expand...
Click to collapse
Tried backing out apps but no joy. Wiped phone and now all works. Think the problem was related to removing the SD card last week to make room for 2nd SIM.
roebling said:
Me too, no problems blocking with Google Voice. Problems with the cell line. Trash marketers programatically continuously dial all possible phone numbers, noting which are activated, without regard to whether or a not lines are cellular. Numbers that are answered progress to stage two, spam calls.
Click to expand...
Click to collapse
Ahh, might have a solution for you. Back in the days before cell phones were popular, landlines ruled the earth with cassette tape answering machines. I would get the same trash and telephone marketers with their systems listening for the caller to say hello and connect you to their marketers, if no one picked up then their system would call until someone picked up. BUT! if that same system got a certain signal it would remove the phone number from their call list.
this link is automated recording of a disconnected or number not in service. Save this as your voicemail greeting, the tones you hear at the beginning are what tell their system that the number is not in service and remove you from their list.
How to block number in lenovo phab2 plus??......it has no option for privacy in settings and call details also does not show any options to block
All incoming calls from people not in the contact list show caller ID name as "Restricted", despite the phone number being available. Sometimes the incoming number is displayed, sometimes it's not, depending on where the incoming call is shown. The number is always available in call history, and the caller's location is displayed. This is a huge headache, since some of us don't care for answering blocked callers.
This is not a carrier issue, but a glitch in the way the phone interprets the caller ID information.
Has anyone come up with a workaround or fix yet?
Same issue here. Quite frustrating.
geekasso said:
Same issue here. Quite frustrating.
Click to expand...
Click to collapse
I thought it was related to me having the google dialer framework installed.
Now I know I'm not alone. Yeah, pain in the butt.
X3