Fixed
Status Update
Comments
sg...@google.com <sg...@google.com> #2
Here is what I see.
In AudioRecord.h and in the MediaRecorder.AudioSource, the enum values differ.
In native code (AudioRecord.h), the values are ..
44 enum input_source {
45 DEFAULT_INPUT =-1,
46 MIC_INPUT = 0,
47 VOICE_UPLINK_INPUT = 1,
48 VOICE_DOWNLINK_INPUT = 2,
49 VOICE_CALL_INPUT = 3,
50 NUM_INPUT_SOURCES
51 };
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=include/media/AudioRecord.h;h=13e51eea1eb478517f677df0642b4d2221571192;hb=donut#l38
In Java MediaRecorder AudioSource, the values are ..
120 public final class AudioSource {
121 /* Do not change these values without updating their counterparts
122 * in include/media/mediarecorder.h!
123 */
124 private AudioSource() {}
125 public static final int DEFAULT = 0;
126 /** Microphone audio source */
127 public static final int MIC = 1;
128
129 /** Voice call uplink (Tx) audio source */
130 public static final int VOICE_UPLINK = 2;
131
132 /** Voice call downlink (Rx) audio source */
133 public static final int VOICE_DOWNLINK = 3;
134
135 /** Voice call uplink + downlink audio source */
136 public static final int VOICE_CALL = 4;
137 }
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=media/java/android/media/MediaRecorder.java;h=be4b489eb08683750fc2149184ab073e8528e6d4;hb=donut#l120
Now, if you look at AudioFlinger, any input source, whose value of stream type is >=
NUM_INPUT_SOURCES (i.e., 4), we will get an "invalid stream type". Because of the
mismatch of the enums, the Java API sets the value of VOICE_CALL stream type as 4.
So, the check fails and we get the failure.
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=libs/audioflinger/AudioFlinger.cpp;h=da7cc8a6aa62a9d66097a6d9c7c184d132df7c3d;hb=donut#l2245
Fix:
Set the values of the stream types to be the same in the Java and c++ code.
Hope this helps.
In AudioRecord.h and in the MediaRecorder.AudioSource, the enum values differ.
In native code (AudioRecord.h), the values are ..
44 enum input_source {
45 DEFAULT_INPUT =-1,
46 MIC_INPUT = 0,
47 VOICE_UPLINK_INPUT = 1,
48 VOICE_DOWNLINK_INPUT = 2,
49 VOICE_CALL_INPUT = 3,
50 NUM_INPUT_SOURCES
51 };
In Java MediaRecorder AudioSource, the values are ..
120 public final class AudioSource {
121 /* Do not change these values without updating their counterparts
122 * in include/media/mediarecorder.h!
123 */
124 private AudioSource() {}
125 public static final int DEFAULT = 0;
126 /** Microphone audio source */
127 public static final int MIC = 1;
128
129 /** Voice call uplink (Tx) audio source */
130 public static final int VOICE_UPLINK = 2;
131
132 /** Voice call downlink (Rx) audio source */
133 public static final int VOICE_DOWNLINK = 3;
134
135 /** Voice call uplink + downlink audio source */
136 public static final int VOICE_CALL = 4;
137 }
Now, if you look at AudioFlinger, any input source, whose value of stream type is >=
NUM_INPUT_SOURCES (i.e., 4), we will get an "invalid stream type". Because of the
mismatch of the enums, the Java API sets the value of VOICE_CALL stream type as 4.
So, the check fails and we get the failure.
Fix:
Set the values of the stream types to be the same in the Java and c++ code.
Hope this helps.
sg...@google.com <sg...@google.com> #3
i have Put in Manual Settings for Call Recorder Source as 0,1,2 and 3 All these
Settings only Records Voice Stream from MIC only there is no Such VoiceCall,
VoiceCall Incomming and Outgoing.
I think Google have missed some file to Support it Actual
Settings only Records Voice Stream from MIC only there is no Such VoiceCall,
VoiceCall Incomming and Outgoing.
I think Google have missed some file to Support it Actual
ge...@paymentsense.com <ge...@paymentsense.com> #4
use vrecorder
sg...@google.com <sg...@google.com> #5
android.media.MediaRecorder.AudioSource.VOICE_DOWNLINK ;
android.media.MediaRecorder.AudioSource.VOICE_UPLINK ;
These two option do not work!
Whatever I set it to VOICE_DOWNLINK,VOICE_UPLINK or VOICE_CALL, the resault is the
same as VOICE_CALL!
Please fix!
Thanks!
android.media.MediaRecorder.AudioSource.VOICE_UPLINK ;
These two option do not work!
Whatever I set it to VOICE_DOWNLINK,VOICE_UPLINK or VOICE_CALL, the resault is the
same as VOICE_CALL!
Please fix!
Thanks!
ge...@paymentsense.com <ge...@paymentsense.com> #6
I couldn't figure out how to star... But I need to call records because of my
business..
business..
sg...@google.com <sg...@google.com> #7
Fix this google you lazy fucks
ge...@paymentsense.com <ge...@paymentsense.com> #8
fix it to beat iphone
sg...@google.com <sg...@google.com> #9
LOL! pls fix guys! come on
ge...@paymentsense.com <ge...@paymentsense.com> #10
The issues related to this bug started over a year ago. Google's inability to fix
this bug presents a great opportunity for competitors to show the inferiority of
Google's support and community help.
this bug presents a great opportunity for competitors to show the inferiority of
Google's support and community help.
sg...@google.com <sg...@google.com> #11
Pls fix. I work in service for homeowners. This would help out for me to remember
appts and also to prove to them they had appointments set. PLSSSSSSS fix!!
appts and also to prove to them they had appointments set. PLSSSSSSS fix!!
ge...@paymentsense.com <ge...@paymentsense.com> #12
[Comment deleted]
ge...@paymentsense.com <ge...@paymentsense.com> #13
[Comment deleted]
sg...@google.com <sg...@google.com> #14
This is such an important feature. I have been receiving several threats and if this worked then i would be able to get a restraining order, however its broke so i cant. I use a Motorola Droid
ge...@paymentsense.com <ge...@paymentsense.com> #15
It doesn't work in Android 2.1.
ap...@google.com <ap...@google.com> #16
Eric Raymond has been doing a good job of selling the Android (Nexus1, etc) But this is an essential feature. Without it, I might as well use Symbian S60; they are Open Source now too. I'll hold out a little while longer for this, but not much.
an...@paymentsense.com <an...@paymentsense.com> #17
Seems like this should be fixed.
cl...@google.com <cl...@google.com>
ap...@google.com <ap...@google.com> #18
Something new in Android 2.2 , are there 3 options work now ?
cl...@google.com <cl...@google.com> #19
Tried in Froyo (2.2) and the VOICE_DOWNLINK option still records from the MIC, even when you are on a phone call. So it still does not work, and there seems to be no way to record the voice stream during a call.
ap...@google.com <ap...@google.com> #20
I hate to admit it but android is starting to disappoint me. :-(
Maybe I must swallow my pride and become a iphone user since I see this as a requirement for a phone
Maybe I must swallow my pride and become a iphone user since I see this as a requirement for a phone
ap...@google.com <ap...@google.com> #21
This issue started almost a year ago and still marked as New. Seems like ignored by developers..
ap...@google.com <ap...@google.com> #22
Yes the issue should be fixed but I have to say... it's not directly just android related.
To get this to work the hardware vendors would need to include the correct libraries in there builds.
I think that this is why no googlers did any task on this, but they could at least have said this.
As AUDIO calls wont go directly trough the system (only the notifications) someone would need to write hardware drivers for the corresponding phones.
The audio is directly routed from the GSM chips to the audio in/out chips and to actually get hold of this streams it would need some driver that intercepts this or reroute it trough the phone (rerouting could cause problem with delays but outputing to two different places could be a solution).
My best bet is that some skilled coder (sorry Im not that skilled and dont have the time to digg that deep for it) could write a driver missusing the BT stack (the same as the FM Radio driver on Nexus/Desire does with the FM signal where the audio gets decoded on the chip and sent to the speaker but I dont know exactly if this goes trough the system or if they also bypass android because I havent seen any FM recording app until now (or dont know of one).
To get this to work the hardware vendors would need to include the correct libraries in there builds.
I think that this is why no googlers did any task on this, but they could at least have said this.
As AUDIO calls wont go directly trough the system (only the notifications) someone would need to write hardware drivers for the corresponding phones.
The audio is directly routed from the GSM chips to the audio in/out chips and to actually get hold of this streams it would need some driver that intercepts this or reroute it trough the phone (rerouting could cause problem with delays but outputing to two different places could be a solution).
My best bet is that some skilled coder (sorry Im not that skilled and dont have the time to digg that deep for it) could write a driver missusing the BT stack (the same as the FM Radio driver on Nexus/Desire does with the FM signal where the audio gets decoded on the chip and sent to the speaker but I dont know exactly if this goes trough the system or if they also bypass android because I havent seen any FM recording app until now (or dont know of one).
ap...@google.com <ap...@google.com> #23
It would be useful if there was an API that indicated which AudioSources were supported on a device. Something like:
/**
* Returns those audio sources supported by the device.
*/
public int[] AudioManager#getSupportedAudioSources()
Not only would this allow developers to gracefully handle devices that don't conform, but it would also highlight to device manufacturers where they are deficient and provides a point of competition between them.
I think this may have been the intention of MediaRecorder#getAudioSourceMax but the contract is not clear whether it is the maximum source supported by the device or just the maximum value supported by the current build of the platform. And in any case it assumes all sources up to any including that source are supported which is a very linear view.
NB AudoManager would eb the right place for this method IMHO because it could be used from any input mechanism eg MediaRecorder, AudioRecord.
/**
* Returns those audio sources supported by the device.
*/
public int[] AudioManager#getSupportedAudioSources()
Not only would this allow developers to gracefully handle devices that don't conform, but it would also highlight to device manufacturers where they are deficient and provides a point of competition between them.
I think this may have been the intention of MediaRecorder#getAudioSourceMax but the contract is not clear whether it is the maximum source supported by the device or just the maximum value supported by the current build of the platform. And in any case it assumes all sources up to any including that source are supported which is a very linear view.
NB AudoManager would eb the right place for this method IMHO because it could be used from any input mechanism eg MediaRecorder, AudioRecord.
ap...@google.com <ap...@google.com> #24
Isn't there some kind of conformance test devices have to pass in order to get the Android Market? If so it apparently isn't very thorough.
cl...@google.com <cl...@google.com>
an...@google.com <an...@google.com> #25
Yes there is, but that test is only as good as the contract defined for it. And it also needs to cater for all types of devices, not just mobile phones.
This is why I like the idea of adding an explicit API mechanism to determine the functionality. It makes it clear to the device developer what they need to aim for. It makes it clear to any platform testers whther a device is suitable for its target environment/market. And it makes it clear to application developers at runtime whether the device is capable.
This is why I like the idea of adding an explicit API mechanism to determine the functionality. It makes it clear to the device developer what they need to aim for. It makes it clear to any platform testers whther a device is suitable for its target environment/market. And it makes it clear to application developers at runtime whether the device is capable.
an...@google.com <an...@google.com> #26
Please developers fix this and don't ignore this request! Android LACKS of the ability to record the voice of the caller and this is a SHAME!
cu...@gmail.com <cu...@gmail.com> #27
i did record both party audio streams from outgoing call for 30sec, but for incoming call it goes wrong..
So, its not the logic which was wrong but the device itself doesn't support..
Developers, please fix this..
So, its not the logic which was wrong but the device itself doesn't support..
Developers, please fix this..
ch...@google.com <ch...@google.com> #28
i think it is all android(google) related, because even their own phones (nexus one and etc) have this issue.
Why we have such options in framework if they don't work on any device?
Why we have such options in framework if they don't work on any device?
Description
Hello,
The issue continues to happen for us even with AGP 8.4.1. I am attaching the smali output here.
java.lang.VerifyError: Verifier rejected class com.pax.log.LogUtils: java.lang.StackTraceElement com.pax.log.LogUtils.getCaller(com.pax.log.b, java.lang.StackTraceElement[], int) failed to verify: java.lang.StackTraceElement com.pax.log.LogUtils.getCaller(com.pax.log.b, java.lang.StackTraceElement[], int): [0x21] type Undefined unexpected as arg to if-eqz/if-nez (declaration of 'com.pax.log.LogUtils' appears in /data/app/******-1/base.apk:classes8.dex)
at com.pax.log.LogUtils.isAndroid(LogUtils.java:125)
at com.pax.log.PaxLogWrapper.<init>(PaxLogWrapper.java:63)
at com.pax.log.PaxLogWrapper.<init>(PaxLogWrapper.java:52)
at com.pax.log.LogWrapperBinding.<clinit>(LogWrapperBinding.java:1)
at com.pax.log.LogWrapperBinding.registerLog(LogWrapperBinding.java:1)
at com.pax.poscomm.utils.CommLog.<clinit>(CommLog.java:1)
at com.pax.poscomm.utils.CommLog.v(CommLog.java:1)
at com.pax.poscomm.posapi.peripheries.NeptuneBase.getDalObjFromNeptuneLite(NeptuneBase.java:5)
at com.pax.poscomm.posapi.peripheries.NeptuneBase.getDalObjectFromNeptuneLib(NeptuneBase.java:6)
at com.pax.poscomm.posapi.peripheries.NeptuneBase.getClassLoader(NeptuneBase.java:2)
at com.pax.poscomm.posapi.peripheries.NeptuneBase.loadDex(NeptuneBase.java:4)
at com.pax.poslink.POSLinkAndroid.a(POSLinkAndroid.java:2)
at com.pax.poslink.POSLinkAndroid.init(POSLinkAndroid.java:21)