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.

















































