Overview
The Duress app is designed for discreetly triggering emergency alerts the Zero Trace Phone by broadcasting specific intent messages. The companion app, Wasted, acts as a receiver for these broadcasts, immediately executing predefined emergency procedures.
Additionally, Tasker integration is possible, enabling extensive automation capabilities in response to a Duress trigger.
Configuration & Usage
Step 1: Configuring Duress App
Open the Duress app and complete the fields as follows:
- Action: Enter a unique intent action string.
- Example:
com.x13a.duress.TRIGGER_PANIC
- Receiver: Specify the target receiver component explicitly from the Wasted app.
- Example:
com.x13a.wasted/.DuressReceiver
- Key: Define a meaningful key for alert categorization.
- Example:
alert_level
- Code: Provide a custom authentication or identifier code.
- Example:
DURESS_911
- Value: Set the alertโs urgency or type.
- Example:
high
- PIN/password or length: Enter a duress-specific PIN/password that is at least two characters longer than your standard PIN/password.
- Example: If your normal PIN is
123456
, your Duress PIN could be12345678
.
Example Configuration:
Field | Example |
---|---|
Action | com.x13a.duress.TRIGGER_PANIC |
Receiver | com.x13a.wasted/.DuressReceiver |
Key | alert_level |
Code | DURESS_911 |
Value | high |
PIN/password or length | 12345678 |
Step 2: Setting Up the Wasted App Receiver
To handle the broadcast from Duress, ensure the Wasted app has a configured broadcast receiver listening for your specified action.
Java Broadcast Receiver (DuressReceiver.java)
package com.x13a.wasted;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class DuressReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if ("com.x13a.duress.TRIGGER_PANIC".equals(intent.getAction())) {
String alertLevel = intent.getStringExtra("alert_level");
String code = intent.getStringExtra("code");
Log.d("DuressReceiver", "Alert received: " + alertLevel + ", Code: " + code);
if ("high".equals(alertLevel) && "DURESS_911".equals(code)) {
triggerEmergencyProtocol(context);
}
}
}
private void triggerEmergencyProtocol(Context context) {
// Implement your emergency action, e.g.,
// send alerts, wipe sensitive data, lock device, etc.
}
}
AndroidManifest.xml Configuration
Add the receiver configuration to your AndroidManifest.xml
:
<receiver android:name=".DuressReceiver">
<intent-filter>
<action android:name="com.x13a.duress.TRIGGER_PANIC" />
</intent-filter>
</receiver>
Integrating Tasker
You can use Tasker as an alternative or complement to the Wasted app:
Tasker Integration Steps:
- Configure Duress App:
- Action:
com.duress.TASKER_TRIGGER
- Receiver: (Leave Blank)
- Key:
alert
- Code:
TASKER_DURESS
- Value:
true
- PIN/password length: Normal PIN + 2 additional characters
- Tasker Profile:
- Event: Intent Received (
com.duress.TASKER_TRIGGER
)
- Tasker Task:
- Actions could include:
- Sending emergency SMS with location (
%LOC
) - Getting GPS location
- Recording audio
- Sending emergency SMS with location (
Example Task Actions:
- Send SMS (with
%LOC
) - Get GPS Location
- Record Audio
Permissions for Tasker:
Ensure Tasker has necessary permissions enabled:
- SMS, Calls, Location, Microphone, Storage, Notifications
Practical Usage
- When you enter your Duress PIN/password, the Duress app broadcasts the configured intent.
- Wasted or Tasker immediately receives this broadcast and triggers the defined emergency protocol.
Testing
- Use Duressโs built-in โTESTโ mode to confirm broadcast reception without executing emergency actions.
- Monitor logs (
adb logcat
) for verification.
Troubleshooting
- Ensure intent action strings match exactly.