Client overview
There are client's features for PTT service.
PTT signalling
PTT signalling type
Touch/Click
PTT signalling by User Touch/Click.
Volume key
PTT signalling by smart phone's volume key.
Maker | Model | Supported | Issues |
---|---|---|---|
SAMSUNG | Galaxy S8 Note | O | |
Galaxy S8 | O | ||
Galaxy S7 Edge | O | ||
Galaxy S7 | O | ||
Galaxy S6 Edge+ | * | Required on with "Allow using button when media is playing" option | |
Galaxy S5 | |||
Galaxy S4 | |||
Galaxy S3 | X | ||
Galaxy S2 | X | ||
Galaxy Alpha | |||
Galaxy Note 4 | |||
Galaxy Note 3 | |||
Galaxy Note 2 | |||
LG | V30 | ||
G5 | |||
G4 | |||
G3A | |||
G2 | |||
Optimus View 2 | |||
Motolora | MotoG | X | |
SONY | XPERIA Z2 | ||
Xiaomi | Redmi Note 2 |
PTT key
PTT signalling by a dedicated device's PTT key. (Android only)
Belows are dedicated key and boradcast event
Type | Key code | Braodcast intent | Remark |
---|---|---|---|
PTT lock | 230 | android.intent.action.PTT.down | |
PTT unlock | 230 | android.intent.action.PTT.up |
Bluetooth
1) PTT signalling by Bluetooth's a dedicated PTT button.
2) PTT signalling by Bluetooth's a play button.
Please refer to Bluetooth document
Earset
PTT signalling by Earset's Play button.
Keyboard
PTT signalling by a space key.
In case of an android version, user can choice the key in setup.
Windows message
Window app can send a PTT event to ProPTT2 Windows client by Windows user message.
Lock : UM_EXTERNALPTTBUTTON_LOCK (WM_USER + 701)
Unlock : UM_EXTERNALPTTBUTTON_UNLOCK (WM_USER + 702)
VOX(Voice-Operated Switch)
PTT signalling by VAD(Voice Activity Detector).
In case of ProGate, is also support SAD(Scratch Activity Detector).
Emergency lock
PTT signalling by Administrator. User's PTT signal will be broken.
Competition lock
All user can request a lock before other user's unlock. When other user's lock is released, one of competition lock users can have the next lock. It would be depend on network and system status.
Master lock
In PTT, normally only a user can have lock. But in multi lock mode, channel owner can have another lock at the same time.
SOS signalling
SOS key
SOS signalling by a dedicated device's SOS key. (Android only)
Belows are dedicated key and boradcast event
Type | Key code | Braodcast intent | Remark |
---|---|---|---|
SOS | 229 | android.intent.action.SOS.up android.intent.action.SOS.longpress |
USB SOS key
SOS signalling by a dedicated USB device's SOS key. (Windows only)
Channel changing
Channel changing key
Channel changing by a dedicated device's key. (Android version 3.0.8~, Embedded version 3.0.3~)
Belows are dedicated key and boradcast event
Type | Key code | Braodcast intent | Remark |
---|---|---|---|
Move to Previous Channel | 220 | android.intent.action.channelup.up android.intent.action.channel.up |
|
Move to Next Channel | 221 | android.intent.action.channeldown.up android.intent.action.channel.down |
Android App Launch
Other app can launch ProPTT2 Android client by Intent.
Client | Package name | Remark |
---|---|---|
Android Client | com.imptt.proptt | |
Android Embedded Client | com.imptt.proptt.embedded | |
Intent intent = this.getPackageManager().getLaunchIntentForPackage(packageName); intent.setAction(Intent.ACTION_MAIN); startActivity(intent); |
Android standard event
ProPTT2 client fire events for device or external app. (Android version 3.1.0~, Embedded version 3.1.0~)
Belows are boradcast events
Braodcast intent | Parameter | Remark |
---|---|---|
android.intent.event.log.in | userId(string), userName(string) | |
android.intent.event.log.out | ||
android.intent.event.ptt.locked | channelNo(string), lockerId(string), lockerName(string) | |
android.intent.event.ptt.unlocked | channelNo(string), lockerId(string) | |
android.intent.event.sos.fired | channelNo(string), senderId(string), senderName(string) | |
android.intent.event.alert.fired | channelNo(string), message(string) | |
android.intent.event.channel.joined | channelNo(string) | It is for only current user. |
android.intent.event.channel.leaved | channelNo(string) | It is for only current user. |
android.intent.event.latency | latency(int) | millisecond. round-trip latency |
Android device provisioning
ProPTT2 client support device provisioning. (Android version 3.1.0~, Embedded version 3.1.0~)
Device supplier can provision device for customer.
It would be usefull for non-screen device.
The provisioning is based on ProPTT2.ini. The ini file must be in {USB mounted}/ProPTT2.
ex)
/storage/emulated/0/ProPTT2/ProPTT2.ini
/sdcard/ProPTT2/ProPTT2.ini
* The rooting is not requried.
If you don't want to provision a field, you can remove the field, then the operation would be on default.
In Android 11 and above, Android device provisioning would not work anymore. Android 11 system restrict to access external file like the ini file on Android device.
Field Name | Available Value | Description |
---|---|---|
DisableService | true/false, default false | Disable service feature on log-in |
CompanyLogo | png file name | Set logo image on log-in |
ServerAddress | Text | Server's address. Domain name is possible. |
UserID | Text | Android: User's ID without domain. Embedded: UserID@Domain |
Domain | Text | User's domain. Android only |
UserPassword | Text | User's password |
EncryptedUserPassword | Text | Encryped user's password. It will work with [AutoLogIn] option Sha512(Password) (Android 4.1.0~, Embedded 4.1.0~) Please refer to https://passwordsgenerator.net/sha512-hash-generator/ |
UseSecureLogin | true/false, default true | Use secured login |
UseSSAID | true/false, default false | Use SSAID for login authentication (Android 4.3.4~, Embedded 4.3.4~) |
UseIMEI | true/false, default false | Use IMEI authentication. Please note Android 11 and above is not support IMEI anymore. |
UsePhoneNumber | true/false, default false | Use phone number authentication |
UseMobileOnly | true/false, default false | Use mobile network only |
AutoLogIn | true, default false | Use auto login |
AutoReconnect | true, default false | Use auto reconnect |
AutoStart | true, default false | Use auto start at boot |
UseDeviceLogin | true, default false | Use device login. UseSSAID or UseIMEI or UsePhoneNumber must be true. (Android 7.2.2~, Embedded 7.2.5~) |
StartChannel | 0 or above 0: The first channel, 1~: channel number to be joined |
Use auto join to channel at boot (Android version 3.1.10~, Embedded version 3.1.9~) |
UseDisconnectSound | false, default true | Use a sound when disconnect |
PTTMode | "hold"/"toggle", default hold | Select PTT button type |
UseInterception | true, default false | User interception of channel owner |
EarphoneMode | "hold"/"toggle", default toggle | Select earphone type |
AudioQuality | "high"/"medium"/"low", default medium | Select audio quality |
LocationSensitivity | "high"/"medium"/"low", default medium | Select location sensitivity |
LocationSendingInterval | 10~50 | Set the interval of location sending |
PTTKeycode | Number | Set android key code for PTT ex)230 |
PTTBroadcastDown | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Set android broadcast for PTT key down ex)android.intent.action.PTT.down |
PTTBroadcastUp | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Set android broadcast for PTT key up ex)android.intent.action.PTT.up |
SOSKeycode | Number | Set android key code for SOS ex)229 |
SOSBroadcast | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Set android broadcast for SOS fire ex)android.intent.action.SOS.up |
NextChannelKeycode | Number | Set android key code for NextChannel |
NextChannelBroadcast | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Set android broadcast for NextChannel fire |
PrevChannelKeycode | Number | Set android key code for PrevChannel |
PrevChannelBroadcast | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Set android broadcast for PrevChannel fire |
SkipConnectedChannel | true/false, default false | Whether skip the connected channel on channel moving |
PlayKeycode | Number | Set android key code for playing of last PTT |
PlayBroadcast | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Set android broadcast for last PTT playing fire |
StartChannel | 0:The first channel, 1~:Channel number | Set channel number to be started at loading (Android 3.1.9~, Embedded 3.1.8~) |
UsePTTSendSound | true/false, default true | Use the PTT sound for sending time (Android 3.4.10~, Embedded 3.4.5~) |
UsePTTReceiveSound | true/false, default true | Use the PTT sousoundnf for receiving time (Android 3.4.10~, Embedded 3.4.5~) |
UsePTTEndSound | true/false, default true | Use the PTT sound for end time (Android 3.4.10~, Embedded 3.4.5~) |
UseSOSSendSound | true/false, default true | Use the SOS sound for sending time (Android 3.4.10~, Embedded 3.4.5~) |
UseSOSReceiveSound | true/false, default true | Use the SOS sound for receiving time (Android 3.4.10~, Embedded 3.4.5~) |
UseAlertReceiveSound | true/false, default true | Use the Alert sound for receiving time (Android 3.4.10~, Embedded 3.4.5~) |
TouchableDevice | true/false, default false | Does this device have a touchable LCD. Menus will be hide on screen. (Only Embedded 4.0.2~) |
NonScreenDevice | true/false, default false | Does this device have no LCD. Support TTS for the start channel (Only Embedded 4.0.3~) |
KioskMode | true/false | Use Kiosk Mode (Only Embedded 4.0.5~) |
CompanyName | Text | Login text on login screen wil be changed. (Only Embedded 4.1.0~) |
PTTHistoryBroadcast | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Go to PTT history screen. (Only Embedded 4.1.6~) |
UseSetupEdit | true/false, default true | Use a edit control in setup. It is for non-touch device (Only Embedded 4.1.6~) |
UseAppForegroundWhenSendPTT | true/false, default false | When user send PTT, app would be popup (Android 4.1.9~, Embedded 4.1.6~) |
UseAppForegroundWhenReceivePTT | true/false, default false | When user is received PTT, app would be popup (Android 4.1.9~, Embedded 4.1.6~) |
UseAppForegroundWhenReceive11PTT | true/false, default false | When user is received 1:1 PTT, app would be popup (Android 4.1.9~, Embedded 4.1.6~) |
UseVolumeSync | true/false, default false | On VoIP mode, if system sound volume is changed, the call volume also would be changed. It is for non-touch devic (Only Embedded 4.1.6~) |
TouchScreenPTT | Text | It will be on main screen. (Only Embedded 4.1.6~) |
UseChannelNameOnMain | true/false, default false | The channel name will be on main screen. But TouchScreenPTT would have high priority (Only Embedded 7.1.3~) |
UseDisableAutoLockWhenAppRunning | true/false, default true | When the app is running, screen lock would be disabled. (Android 4.1.9~, Embedded 4.1.6~) |
UseAutoRotation | true/false, default true | Android: true(Vertical), false(Static) Embedded true(Rotation), false(Static) (Android 4.1.9~, Embedded 4.1.8~) |
FunctionKeycode | Number | Set android key code for calling function (Android 4.1.17~, Embedded 4.1.9~) |
FunctionBroadcast | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Set android broadcast for calling function (Android 4.1.17~, Embedded 4.1.9~) |
CurrentChannelKeycode | Number | Set android key code for TTS reading currenr channel no (Android 4.1.17~, Embedded 4.1.9~) |
CurrentChannelBroadcast | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Set android broadcast for TTS reading currenr channel no (Android 4.1.17~, Embedded 4.1.9~) |
MoveTo11ScreenWhenReceive11PTT | permanent | When user is received 1:1 PTT, channel would be move to 1:1 channel (Embedded 4.2.2~ only) |
MoveToLastChannelKeycode | Number | Move to last PTT channel (Embedded 4.2.2~ only) |
MoveToLastChannelBroadcast | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Move to last PTT channel (Embedded 4.2.2~ only) |
MoveToLast11ChannelKeycode | Number | Move to last 1:1 channel (Embedded 4.2.2~ only) |
MoveToLast11ChannelBroadcast | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Move to last 1:1 channel (Embedded 4.2.2~ only) |
VideoShareKeycode | Number | Move to video share (Android 4.3.4~, Embedded 4.3.4~) |
VideoShareBroadcast | intent or intent:action:keycode action - 0:ACTION_DOWN, 1:ACTION_UP ex) android.intent.action.key.up ex) android.intent.action.key:1:100 |
Move to video share (Android 4.3.4~, Embedded 4.3.4~) |
UseMP3mode | true/false, default false | Use MP3 mode for PTT play (Android 7.0.4~, Embedded 7.0.2~) |
UseGoToVibration | true/false, default true | When app's volume move to zero, the vibration mode would be On. But some devices hava a volume control issue on the vibration mode. (Android 8.1.9~, Embedded 8.1.9~) |
UseNumberKeyPad | true/false, default true | To use a number key pad. (Only Embedded 8.2.4~) |
UseNoiseReductionAtAudioInput | true/false, default fase | To use the AI base noise reduction at audio input. (Android 9.1.4~, Embedded 9.1.4~) |
< Sample ini files >
- Hytera PNC360S
- Hytera PNC370
- Hytera PNC380
- TeloSystem TE390
- Inrico T529A with KnobMap.ini
* KnobMap.ini can support mapping knob button and ProPTT2 channels.
PTT Call Model
PTT has several types of call.
1:N Channel
It is a general call model.
1:N Group
Group means a temporary channel for 1:N.
1:1 Peer
It is one of group.
Features
There are general features of PTT device.
TOT
It is "Time Out Timer".
DTMF
It is "Dual Tone Multiple Frequency". Some radio devices support DTMF. But smartphone app don't use DTMF directly.
PTT Processing Type
There are several processing types for PTT.
Type | Record and send(Not real-time) | Half real-time(MP3 mode) | Full real-time(VOIP mode) | Master's PTT(VOIP mode) |
---|---|---|---|---|
Advatage | Support off-line PTT | Good audio quality | Best responsiblity Can support full-duplex in multi-channel |
No limitation of TOT Can support full-duplex in same channel |
Disadvatage | Low responsiblity Can not support full-duplex |
Delayed PTT sound Can not support full-duplex |
Normal audio quality(VOIP) | Required better jitter for long communication |
Product Company | V Company | Z Company ProPTT2(Android, Embedded) |
ProPTT2 | ProPTT2 |
Half real-time(MP3 mode)
Used half-duplex and delayed recieved audios until recording.
Full real-time(VOIP mode)
Used full-duplex and played recieved audios promptly.
Master's PTT(VOIP mode)
Used full-duplex and There are sending and receving in same channel at the same time.