வாகனம் ஓட்டுதல் மற்றும் பாதுகாப்பு
ட்ரேஸ்லெட் மூல இடம் + முடுக்கமானி ஸ்ட்ரீமை ** அர்த்தமுள்ளதாக மாற்றும் ஒரு சாதனம் எவ்வாறு நகர்கிறது என்பது பற்றிய நிகழ்வுகள்** - முற்றிலும் சாதனத்தில், மேகம் இல்லாமல் அழைக்கிறது. 3.3.0 இல் சேர்க்கப்பட்டது, மூன்று சுயாதீன அம்சங்கள் உள்ளன:
| அம்சம் | அது உங்களுக்கு என்ன சொல்கிறது | நீங்கள் அதை செயல்படுத்த | நீங்கள் கேளுங்கள் |
|---|---|---|---|
| டிரைவிங் நிகழ்வுகள் | ”ஓட்டுனர் கடுமையாக பிரேக் போட்டார் / கடினமாக முடுக்கிவிட்டார் / கூர்மையான திருப்பத்தை எடுத்தார் / வேகமாக வருகிறார்” | நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் |
| போக்குவரத்து முறை | ”பயனர் இப்போது வாகனத்தில் நடக்கிறார் / ஓடுகிறார் / சைக்கிள் ஓட்டுகிறார்” | நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் |
| விபத்து மற்றும் வீழ்ச்சி | ”விபத்து (அல்லது வீழ்ச்சி) இப்போது நடந்திருக்கலாம்” | நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் |
இங்குள்ள அனைத்தும் இயல்பாகவே தேர்வு மற்றும் முடக்கத்தில் இருக்கும். நீங்கள் ஒரு அம்சத்தை இயக்கவில்லை என்றால், அதன் இயந்திரம் உருவாக்கப்படவே இல்லை - உங்கள் தற்போதைய கண்காணிப்பு சரியாக செயல்படுகிறது முன். உங்களுக்கு தேவையானதை மட்டும் இயக்கவும்.
இது யாருக்காக? (உலக உதாரணங்கள்)
- பயன்பாடு அடிப்படையிலான காப்பீடு / கடற்படை பாதுகாப்பு → ஓட்டுநர் நிகழ்வுகள் உங்களுக்கு ஒரு பயணத்தை வழங்குகிறது எந்த சர்வர் பக்கமும் இல்லாமல் ஆபத்தான வாகனம் ஓட்டும் படம் (கடுமையான பிரேக்கிங், வேகம்). செயலாக்கம்.
- டெலிவரி / கள-சேவை பயன்பாடுகள் → போக்குவரத்து முறை ஒவ்வொரு பயணத்தையும் இவ்வாறு குறிக்க உங்களை அனுமதிக்கிறது ஓட்டுதல் எதிராக நடத்தல் (எ.கா. “வேனை விட்டு, வாசலுக்கு நடப்பது”).
- தனி வேலை செய்பவர் / ரைடுஷேர் / தனிப்பட்ட-பாதுகாப்பு பயன்பாடுகள் → விபத்து மற்றும் வீழ்ச்சி கண்டறிதல் நம்பகமான தூண்டுதலை உங்களுக்கு வழங்குகிறது (பயனர் “நான் நன்றாக இருக்கிறேன்” ரத்துச் சாளரத்துடன்). ஒரு SOS ஓட்டத்தைத் தொடங்கவும்.
நீங்கள் எந்த கலவையையும் இயக்கலாம் - அவை சுயாதீனமானவை.
1. ஓட்டுநர் நிகழ்வுகள் (டெலிமாடிக்ஸ்)
30-வினாடி பதிப்பு
// 1. Turn it on (e.g. with a 50 km/h limit for speeding)
await Tracelet.ready(Config(
telematics: TelematicsConfig(
enableDrivingEvents: true,
speedLimitKmh: 50,
),
));
// 2. Listen
Tracelet.onDrivingEvent((event) {
print('${event.kind} — severity ${event.severity}');
});
// 3. Start tracking as usual
await Tracelet.start();அவ்வளவுதான். சாதனம் நகரும் போது, இதுபோன்ற நிகழ்வுகளைப் பெறுவீர்கள்:
harsh_braking — severity 0.82
speeding — severity 0.40ஒவ்வொரு துறையும் என்ன அர்த்தம்
ஒவ்வொரு DrivingEvent ஆனது:
| புலம் | பொருள் |
|---|---|
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட், நோட்ரான்ஸ்2லேட், நோட்ரான்ஸ்3லேட், அல்லது நாட்ரான்ஸ்4லேட் |
| நோட்ரான்ஸ்0லேட் | 0.0–1.0 — வாசலை எவ்வளவு தூரம் கடந்தது (ஸ்கோர் செய்வதற்கு எளிது) |
| நோட்ரான்ஸ்0லேட் | அளவிடப்பட்ட எண்: g-force கடுமையான நிகழ்வுகளுக்கு, km/h வரம்பிற்கு மேல் வேகம் |
| நோட்ரான்ஸ்0லேட் | இந்த நேரத்தில் வேகம், m/s இல் |
| நோட்ரான்ஸ்0லேட் / நோட்ரான்ஸ்1லேட் / நாட்ரான்ஸ்2லேட் | எங்கே & எப்போது |
வாசல்களை சரிசெய்தல்
அனைத்து வரம்புகளும் g இல் உள்ளன (1 g ≈ 9.81 m/s², ஈர்ப்பு விசை). இயல்புநிலைகள் பொதுவான காப்பீடு/கப்பற்படை நடைமுறையைப் பின்பற்றுங்கள் - அவற்றை நீங்கள் அரிதாகவே மாற்ற வேண்டும்:
| விருப்பம் | இயல்புநிலை | அது என்ன செய்கிறது |
|---|---|---|
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | இதை விட கடினமான பிரேக் → harsh_braking |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | இதை விட கடினமாக முடுக்கி → harsh_acceleration |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | இதை விட கடினமான மூலை → harsh_cornering |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் (ஆஃப்) | வேக வரம்பு; 0 வேகமான கண்டறிதலை முடக்குகிறது |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | எண்ணும் முன் வரம்புக்கு மேல் அருள் |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | இந்த நீண்ட வரம்புக்கு மேல் இருக்க வேண்டும் (சுருக்கமான பிளிப்புகளைத் தவிர்க்கும்) |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | இந்த வேகத்திற்கு குறைவான நிகழ்வுகளை புறக்கணிக்கவும் (பார்க்கிங் சத்தம்) |
ஏன் சில நேரங்களில் நிகழ்வுகள் இல்லை? டிரைவிங் நிகழ்வுகள் ஜிபிஎஸ் வேகத்தில் இருந்து பெறப்பட்டவை வினாடிக்கு ஒருமுறை புதுப்பிக்கப்படும் மற்றும் சற்று சத்தமாக இருக்கும். ட்ரேஸ்லெட் வேண்டுமென்றே ஆதரவளிக்கிறது உணர்திறன் மீது துல்லியம் — இது ஒரு எல்லைக்கோடு நிகழ்வை தவற விட வேண்டும் ஓநாய் அழ. சிறந்த முடிவுகளுக்கு, உண்மையில் வாகனம் ஓட்டும்போது (நடக்காமல்) இதைப் பயன்படுத்தவும்.
2. போக்குவரத்து முறை
பயனர் still, walking, running, cycling, அல்லது ஒரு
vehicle, முடுக்கமானி இயக்கத்தை GPS வேகத்துடன் இணைப்பதன் மூலம்.
await Tracelet.ready(Config(
classifier: ClassifierConfig(enableFusedClassifier: true),
));
Tracelet.onModeChange((event) {
print('Now: ${event.mode} (confidence ${event.confidence})');
});| விருப்பம் | இயல்புநிலை | அது என்ன செய்கிறது |
|---|---|---|
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | முதன்மை சுவிட்ச் |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | true எனில், ஃப்யூஸ் செய்யப்பட்ட பயன்முறையானது பேட்டரி முடிவுகளுக்கான OS இன் செயல்பாட்டை மீறுகிறது. false (இயல்புநிலை) எனில், அது சிறுகுறிப்பு - OS மதிப்பு பொறுப்பில் இருக்கும் |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | ஒரு புதிய பயன்முறையானது அறிக்கையிடப்படுவதற்கு முன்பே இது தொடர வேண்டும் (மினுமினுப்பதை நிறுத்துகிறது) |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | இதற்கு கீழே, பயன்முறை unknown |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | true எனில், உறுதியான பயன்முறையும் இருப்பிட வடிப்பான்களை மீட்டெடுக்கிறது. கீழே காண்க |
சிறுகுறிப்பு மற்றும் மேலெழுதல்: இயல்பாக வகைப்படுத்தி ஒரு இரண்டாவது கருத்து — இது
ஒரு பயன்முறையைப் புகாரளிக்கிறது, ஆனால் ட்ரேஸ்லெட் ஜிபிஎஸ் மாதிரிகளை மாற்றாது. பெரும்பாலான பயன்பாடுகள் இதை விரும்புகின்றன.
நீங்கள் குறிப்பாக ஃப்யூஸ்டு விரும்பினால் மட்டும் fusedClassifierAuthoritative: true ஐ அமைக்கவும்
பேட்டரி / மாதிரி நடத்தை ஓட்ட விளைவாக.
இருப்பிட வடிப்பான்களைத் தானாகச் சரிசெய்தல்
3.8.0 இல் புதியது.
தொலை-துல்லியமான கண்காணிப்புக்கு வெவ்வேறு வடிகட்டி வரம்புகள் தேவை நடவடிக்கைகள். நடப்பது கடினமான விஷயம்: ~1.4 மீ/வி வேகத்தில் ஜிபிஎஸ் இரைச்சல் தளம் பெரியது நீங்கள் உண்மையில் எவ்வளவு தூரம் நகர்ந்தீர்கள் என்பதன் பின்னம், எனவே ஒரு தளர்வான வடிகட்டி நடுக்கத்தை பதிவு செய்கிறது தூரம். ஒரு காரில் எதிரே உள்ளது - இறுக்கமான வாசல்கள் உண்மையானவை இயக்கம்.
நீங்கள் முன் ஒரு அமைப்பை எடுக்க முடியாது. உங்கள் பயனர்கள் “நான் இப்போது ஜாகிங் செய்கிறேன்” என்று அறிவிக்கவில்லை, மற்றும் ஒரு ஒற்றை அமர்வில் வழக்கமாக நடைபாதைக்கு ஒரு நடை, ஓட்டம் மற்றும் ஏ திரும்பி நடக்க. எனவே வகைப்படுத்துபவர் தீர்மானிக்கட்டும்:
await Tracelet.ready(Config(
classifier: ClassifierConfig(
enableFusedClassifier: true, // required
autoTuneFromTransportMode: true,
),
));ஒரு பயன்முறை ** உறுதிசெய்யும் போது, ட்ரேஸ்லெட் அதற்கு ஏற்ற மதிப்புகளுக்கு நான்கு வரம்புகளை மாற்றுகிறது:
| ஃபேஷன் | நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | நோட்ரான்ஸ்2லேட் | நோட்ரான்ஸ்3லேட் |
|---|---|---|---|---|
| நோட்ரான்ஸ்0லேட் | 25 மீ | 15 மீ | 10 மீ | 3 மீ/வி |
| நோட்ரான்ஸ்0லேட் | 8 மீ | 15 மீ | 10 மீ | 4 மீ/வி |
| நோட்ரான்ஸ்0லேட் | 12 மீ | 25 மீ | 15 மீ | 9 மீ/வி |
| நோட்ரான்ஸ்0லேட் | 20 மீ | 30 மீ | 20 மீ | 20 மீ/வி |
| நோட்ரான்ஸ்0லேட் | 30 மீ | 50 மீ | 30 மீ | 60 மீ/வி |
| நோட்ரான்ஸ்0லேட் | உங்கள் உள்ளமைக்கப்பட்ட மதிப்புகள் மீட்டெடுக்கப்பட்டன |
ஜாகிங்கிற்கு நோக்கத்திற்காக வரிசை இல்லை - இது running பேண்டிற்குள் (6-20 கிமீ/ம),
அதனால்தான் பயனர் எதிர்கொள்ளும் “ஜாகிங் முன்னமைவு” கற்பனையாக இருந்திருக்கும்.
எப்படி கணிக்கக்கூடியதாக இருக்கிறது:
- உறுதியான பயன்முறை மாற்றத்தில் மட்டுமே மறுசீரமைப்பு நிகழ்கிறது - ஏற்கனவே நம்பிக்கையுடன் உள்ளது
மற்றும்
modeSwitchDwellMsமூலம் debounced — எப்போதும் ஒரு சென்சார் வாசிப்பு, அதனால் thresholds அரட்டை அடிக்க முடியாது. - வாசல்கள் இடத்தில் மாற்றப்படுகின்றன. உங்கள் ஓடோமீட்டர் ஒரு முழுவதும் தொடர்ந்து இருக்கும் ஒரு பிரிவை இழப்பதை விட முறை மாற்றம்.
- பயன்படுத்தப்பட்ட மதிப்புகள்
onModeChangeநிகழ்விலும் பிழைத்திருத்தப் பதிவிலும் வரும் ஒரு ஆட்டோ-டியூன் அமைதியாக இருக்காது. - நீங்கள் உள்ளமைத்ததை
unknownமீட்டமைக்கிறது. அது எப்போது என்று ட்ரேஸ்லெட் யூகிக்கவில்லை தெரியாது. autoTuneFromTransportMode(அல்லதுenableFusedClassifier) முடக்க இல் இயக்க நேரம் உங்கள் கட்டமைக்கப்பட்ட வரம்புகளை உடனடியாக மீட்டெடுக்கிறது - அம்சம் இல்லை நீங்கள் அதை அணைத்தவுடன் அதன் விளைவுகளை விட்டுவிடும்.
விண்ணப்பித்ததைப் பார்த்து
ModeChangeEvent.appliedTuning ஆனது நான்கு நுழைவாயில்களைக் கொண்டுள்ளது
படை. தானியங்கு-டியூனிங் முடக்கப்பட்டிருக்கும் போது, மற்றும் unknown பயன்முறையில் இது null ஆகும்
(இது உங்கள் சொந்த மதிப்புகளை மீட்டெடுக்கிறது):
Tracelet.onModeChange((event) {
final tuning = event.appliedTuning;
if (tuning == null) {
print('${event.mode} — your configured thresholds are in force');
} else {
print('${event.mode} → distanceFilter ${tuning.distanceFilter} m, '
'odometerAccuracyThreshold ${tuning.odometerAccuracyThreshold} m');
}
});அதே மதிப்புகள் debug: true மற்றும் logLevel: verbose உடன் பதிவில் தோன்றும்:
auto-tune: 'walking' → distanceFilter=8.0m trackingAccuracy=15m odometerAccuracy=10m maxImpliedSpeed=4m/sஇப்போது நடைமுறையில் இருப்பதைப் படிக்கவும்
onModeChange உங்களுக்கு ஒரு பயன்முறை செய்யும் தருணம் பற்றி கூறுகிறது. என்ன என்று கேட்க
வடிப்பான்கள் எந்த நேரத்திலும் பயன்படுத்தப்படுகின்றன - பயன்முறையில் எந்த மாற்றமும் நடக்காதபோது உட்பட
மணிநேரம் — Tracelet.getCurrentLocationTuning() ஐப் பயன்படுத்தவும்:
final tuning = await Tracelet.getCurrentLocationTuning();
print('in force: distanceFilter ${tuning?.distanceFilter} m, '
'trackingAccuracyThreshold ${tuning?.trackingAccuracyThreshold} m');இது நேட்டிவ் லொகேஷன் செயலியிலிருந்து, இல்லை நீங்கள் உள்ளமைப்பிலிருந்து படிக்கிறது
அமைக்கப்பட்டது. அந்த வேறுபாடு முக்கியமானது: Tracelet.activeConfig என்பது டார்ட் பக்க கண்ணாடி
நீங்கள் கடந்து சென்ற கடைசி Config, எனவே நீங்கள் என்ன கேட்டீர்கள் என்பதை இது தெரிவிக்கிறது
வடிகட்டி உண்மையில் பயன்படுத்துகிறது - மேலும் இது உங்களுக்கு ஒரு தானாக ட்யூனைக் காட்ட முடியாது, ஏனெனில்
ஒரு தன்னியக்க ட்யூன் எந்த கட்டமைப்பு அழைப்பும் இல்லாமல் வரம்புகளை மாற்றுகிறது.
கண்காணிப்பு அமர்வுக்கு முன் null ஆனது ஒரு செயலியை உருவாக்குவதற்கு முன், மற்றும் எப்போதும்
இணையத்தில் null, இதற்கு இணையான வடிகட்டி நிலை இல்லை.
இது நீங்கள் அமைத்த geo.distanceFilter மற்றும் geo.filter.* மதிப்புகளை மேலாகிறது,
ஒரு பயன்முறை உறுதிசெய்யப்படும் வரை. இது அம்சத்தின் புள்ளி, ஆனால் அது செய்கிறது
உங்கள் கட்டமைக்கப்பட்ட வரம்புகள் இயக்க நேரத்தில் நடைமுறையில் இல்லை - அழைப்பு
உண்மையில் என்னவென்று பார்க்க getCurrentLocationTuning(). false (தி
இயல்புநிலை) உங்கள் சரியான மதிப்புகள் மதிக்கப்பட வேண்டும் என்றால்.
3. விபத்து மற்றும் வீழ்ச்சி கண்டறிதல்
உற்பத்திக்கு தயார். சாதனத்தில் நிலையான பைப்லைனுடன் விபத்து கண்டறிதல் கப்பல்கள்: a ரூல் இன்ஜின் இயல்பாக, மேலும் விருப்ப உரிமம் பெற்ற AI விபத்து மாதிரி பயிற்சியளிக்கப்பட்டது CC0 / public-domain செயலிழப்பு தரவுத்தொகுப்பில் — எனவே இது வணிக பயன்பாட்டிற்காக அழிக்கப்பட்டது உற்பத்தி பயன்பாடுகளில். வீழ்ச்சி கண்டறிதல் தேர்வு மற்றும் சிறந்த முயற்சியாக உள்ளது. தடம் தொடர்கிறது இஷ்யூ #183 இல் துல்லிய ஆராய்ச்சி.
சாத்தியமான செயலிழப்பைக் கண்டறிகிறது (நகரும் போது கடினமான தாக்கம்) அல்லது, விருப்பமாக, a தனிப்பட்ட வீழ்ச்சி. தவறான அலாரங்கள் விலை அதிகம் என்பதால், கண்டறிதல் உறுதிப்படுத்தப்பட்டது (ஒரு பெரிய அதிர்ச்சி மட்டும் போதாது) மற்றும் பயனருக்கு ரத்து செய்ய ** கவுண்ட்டவுனை வழங்குகிறது.
await Tracelet.ready(Config(
impact: ImpactConfig(
enableCrashDetection: true,
confirmWindowMs: 15000, // 15s for the user to say "I'm fine"
),
));
Tracelet.onImpact((event) async {
if (event.isPotential) {
// Show a big "Are you OK?" countdown screen.
// If the user taps "I'm fine":
await Tracelet.cancelImpact(event.id);
// If they tap "Get help now":
// await Tracelet.confirmImpact(event.id);
} else {
// event.kind == 'crash' (or 'fall') — confirmed.
// The user didn't cancel in time → start your SOS flow.
}
});ஓட்டம் எவ்வாறு செயல்படுகிறது
- வேகமாக நகரும் போது கடுமையான தாக்கம் → நீங்கள் நாட்ரன்ஸ்0லேட் நிகழ்வைப் பெறுவீர்கள் ஒரு நாட்ரான்ஸ்0லேட்.
- கவுண்டவுன் UI ஐக் காட்டு. பயனர் ரத்துசெய்யலாம் (
cancelImpact) அல்லது இப்போதே உறுதிப்படுத்தலாம் (மொழிபெயர்க்கப்படவில்லை). - காலக்கெடுவிற்கு முன் அவர்கள் எதுவும் செய்யாவிட்டால் → உறுதிப்படுத்தப்பட்ட
crashநிகழ்வு தீயாகிறது.
| விருப்பம் | இயல்புநிலை | அது என்ன செய்கிறது |
|---|---|---|
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | வாகன விபத்து கண்டறிதல் |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | தனிப்பட்ட வீழ்ச்சி (சிறந்த முயற்சி - மேலும் தவறான அலாரங்கள்) |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | செயலிழப்பாகக் கணக்கிடுவதற்கான தாக்க வலிமை (g). ஒரு பெரிய கள-தரவு ஆய்வின் அடிப்படையில் 3.0 இலிருந்து குறைக்கப்பட்டது (3.0 கிராம் உண்மையான செயலிழப்புகளில் பாதி தவறிவிட்டது); ரத்து-கவுண்ட்டவுன் தவறான அலாரங்களைப் பிடிக்கிறது என்பதால் நினைவுகூர உதவுகிறது. நீங்கள் பல அறிவுறுத்தல்களைக் கண்டால் டியூன் செய்யவும். |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | இந்த வேகமாக நகர்ந்திருக்க வேண்டும் (உறுதிப்படுத்தல்) |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | கவுண்டவுன் நீளத்தை ரத்து செய் |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | நம்பிக்கை குறைந்த வேட்பாளர்களை அடக்குங்கள் |
ட்ரேஸ்லெட் உங்களுக்கு தூண்டுதல் மற்றும் ரத்துசெய்தல் சாளரத்தை வழங்குகிறது - இது ஒருபோதும் ஃபோனை உருவாக்காது அழைப்புகள் அல்லது தொடர்புகள் அவசர சேவைகள். உண்மையான SOS/எமர்ஜென்சி ஓட்டத்தை உருவாக்குவது உங்கள் பயன்பாட்டின் பொறுப்பு (மற்றும் UX மற்றும் சட்ட நகலைக் கட்டுப்படுத்த உங்களை அனுமதிக்கிறது).
உறுதிப்படுத்தல் செயலிழக்கப்பட்டது
OS ஆனது செயலியை அழிப்பதன் மூலம் ஒரு வன்முறை தாக்கம் பெரும்பாலும் முடிவடைகிறது - தொலைபேசி தூக்கி எறியப்பட்டது,
வாகனம் ஓய்வெடுக்கிறது, சாதனம் டோஸுக்கு செல்கிறது. ரத்து-கவுண்ட்டவுன் என்றால்
நினைவகத்தில் மட்டுமே வாழ்ந்தது, உறுதிப்படுத்தப்பட்ட crash/fall அமைதியாக ஒருபோதும் சுடாது.
ட்ரேஸ்லெட் கவுண்ட்டவுனை செயல்-மரணத்தை பாதுகாப்பானதாக்குகிறது: உடனடி a
potential_crash/potential_fall உயர்த்தப்பட்டது அது வட்டுக்கு தொடர்ந்து மற்றும் ஒரு
காலக்கெடுவுக்குப் பிறகு எழுந்திருத்தல் ஆயுதம். பயன்பாடு இன்னும் உயிருடன் இருந்தால்
சாதாரணமாக உறுதிப்படுத்துகிறது மற்றும் விழித்தெழுவதை நிராயுதபாணியாக்குகிறது; அது கொல்லப்பட்டிருந்தால், எழுந்திருத்தல்
உறுதிப்படுத்தப்பட்ட நிகழ்வை புதிய செயல்முறையிலிருந்து மீண்டும் வெளியிடுகிறது எனவே உங்கள் SOS ஓட்டம் இன்னும் இயங்கும்.
| மேடை | பொறிமுறை |
|---|---|
| Android | ஒரு துல்லியமான AlarmManager அலாரம் (setExactAndAllowWhileIdle, டோஸில் கூட எரிகிறது) உறுதிப்படுத்தப்பட்ட நிகழ்வை மீண்டும் வழங்கும் ரிசீவரை எழுப்புகிறது. |
| iOS | காலக்கெடுவில் திட்டமிடப்பட்ட உள்ளூர் அறிவிப்பு, பயன்பாடு செயலிழந்திருந்தாலும் பயனரை எச்சரிக்கும்; உறுதிப்படுத்தப்பட்ட நிகழ்வு அடுத்த முறை SDK இயங்கும் போது மீண்டும் வழங்கப்படும் (பின்னணி மறுதொடக்கம் அல்லது முன்புறம்). பயனர் எதிர்கொள்ளும் விழிப்பூட்டலுக்கான அறிவிப்பு அனுமதியை வழங்கவும் - மறு விநியோகம் எந்த வகையிலும் செயல்படும். |
ஒரு பயனர் ரத்துசெய் தொடர்ந்த வேட்பாளரை அகற்றி, விழித்தெழுவதை நிராயுதபாணியாக்குகிறார், எனவே a ரத்து செய்யப்பட்ட வேட்பாளர் மறுதொடக்கம் செய்த பிறகு மீண்டும் உறுதிப்படுத்தப்படுவதில்லை.
உண்மையான விபத்து அல்லது வீழ்ச்சியை உறுதிப்படுத்தும் கூடுதல் தடயங்கள்
ஒரு பெரிய அதிர்ச்சி போதுமானதாக இல்லை - அது பல தவறான அலாரங்களை ஏற்படுத்தும். எனவே ட்ரேஸ்லெட் ஒரு நிஜத்தின் போது பொதுவாக நிகழும் கூடுதல் நிஜ உலக தடயங்களைத் தேடுகிறது விபத்து அல்லது வீழ்ச்சி. அது எவ்வளவு தடயங்களைப் பார்க்கிறதோ, அவ்வளவு உறுதியானது. இந்த தடயங்கள் மட்டுமே முடியும் ட்ரேஸ்லெட்டை அதிக நம்பிக்கையை உருவாக்குங்கள் - அவர்கள் ஒருபோதும் உண்மையான நிகழ்வை ரத்து செய்ய மாட்டார்கள்.
- ஃபோன் விழுந்து கொண்டிருந்தது — யாரோ ஒருவர் தங்கள் ஃபோனைக் கீழே போடுவதற்கு முன்பு அல்லது அதை எடுப்பதற்கு சற்று முன்பு வீழ்ச்சி, தொலைபேசி சுருக்கமாக எடையற்றது. மேலும் வீழ்ச்சியை உண்டாக்கும் ஸ்பாட்டிங் நம்பக்கூடியது.
- பின்னர் எல்லாம் அசைந்தது — உண்மையான வீழ்ச்சிக்குப் பிறகு, நபர் மற்றும் தொலைபேசி பொதுவாக நகர்வதை நிறுத்துங்கள். அந்த திடீர் அமைதி ஒரு வலுவான அறிகுறி.
- கார் திடீரென நின்றது - உண்மையான விபத்தில் வாகனம் வேகமாக செல்கிறது கிட்டத்தட்ட ஓரிரு வினாடிகளில் நிறுத்தப்பட்டது. வேகத்தில் கூர்மையான வீழ்ச்சி ஒரு விபத்தை ஆதரிக்கிறது.
- அழுத்தம் “பாப்” - கடுமையான விபத்து (அல்லது ஏர்பேக் அணைக்கப்படுவது) விரைவாக ஏற்படுகிறது காருக்குள் காற்று அழுத்தத்தில் மாற்றம். பிரஷர் சென்சார் கொண்ட போன்களில் முடியும் இதைக் கவனியுங்கள்; ஒன்று இல்லாத ஃபோன்கள் இந்தச் சரிபார்ப்பைத் தவிர்த்துவிடுகின்றன.
விருப்பத்தேர்வு: உரிமம் பெற்ற AI செயலிழப்பு மாதிரி
இயல்பாக செயலிழப்பைக் கண்டறிதல் விதி இயந்திரத்தைப் பயன்படுத்துகிறது (g-threshold + வேகம் மேலே உறுதிப்படுத்தல்) — கூடுதல் அமைப்பு இல்லை, பெட்டிக்கு வெளியே வேலை செய்கிறது. அதிக துல்லியத்திற்காக நீங்கள் AI க்ராஷ் மாடலைச் செயல்படுத்தலாம்: கேட்ஸ் செயலிழக்கும் ஒரு பயிற்சி பெற்ற மாடல் a ஒரு நிலையான வாசலுக்குப் பதிலாக நிகழ்தகவைக் கற்றுக்கொண்டது.
இது தேர்வு மற்றும் தேவைக்கேற்ப பதிவிறக்கம் (உட்பொதிக்கப்படவில்லை), எனவே அடிப்படை SDK அளவு மாறாமல் உள்ளது. அதை இயக்க, உரிம விசையைப் பெற்று, அதில் உங்கள் கட்டமைப்பைச் சுட்டிக்காட்டவும்:
await Tracelet.ready(Config(
impact: ImpactConfig(
enableCrashDetection: true,
crashModelUnlockUrl: 'https://unlock.ikolvi.com/unlock',
crashModelLicenseKey: '<your license key>',
crashModelThreshold: 0.5074, // rf_probability_threshold from training
),
));| விருப்பம் | இயல்புநிலை | அது என்ன செய்கிறது |
|---|---|---|
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | மாதிரியை செயல்படுத்தும் உரிம இறுதிப்புள்ளி. நோட்ரான்ஸ்2லேட் ⇒ தூய விதி இயந்திரம் |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | உங்கள் உரிம விசை (உரிமத்தைப் பெறுக பக்கத்திலிருந்து) |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் | மாடல் ஒரு செயலிழப்பைக் குறிக்கும் நிகழ்தகவு |
எந்த காரணத்திற்காகவும் (ஆஃப்லைன், தவறான விசை) மாதிரியை இயக்க முடியவில்லை என்றால் SDK தானாகவே விதி இயந்திரத்திற்குத் திரும்பும் — உங்கள் பயன்பாடு தொடர்ந்து இயங்குகிறது.
உரிமம் பெறவும்
உரிமம் பெறவும் பக்கத்திலிருந்து ஒரு விசையைப் பெறவும்: உள்நுழையவும், உங்கள் உள்ளிடவும்
பயன்பாட்டு ஐடி, மற்றும் ஒட்டுவதற்குத் தயாராக இருக்கும் விசையை நகலெடுக்கவும் (அல்லது முழு ImpactConfig
துணுக்கு).
- தேவ் உரிமம் - பிழைத்திருத்த உருவாக்கங்கள் மற்றும் முன்மாதிரிகளுக்கு. உங்கள் பயன்பாட்டு ஐடி மட்டும், கூடுதல் இல்லை அமைவு.
- தயாரிப்பு உரிமம் - நீங்கள் அனுப்பிய பயன்பாட்டிற்கு; உங்கள் பயன்பாட்டு கையொப்ப சான்றிதழும் தேவை
SHA-256 (Play Console → App integrity → App Signing, அல்லது
./gradlew signingReport).
நீங்கள் வழங்கிய விசைகளை போர்ட்டல் பட்டியலிடுகிறது மற்றும் உடனடியாக திரும்பப்பெற** அனுமதிக்கிறது.
4. பயண அடையாளம்: அனைத்தையும் ஒன்றாக இணைத்தல்
இருப்பிடங்கள், ஓட்டுநர் நிகழ்வுகள் மற்றும் பயணச் சுருக்கங்கள் ஆகியவை ஒரே பயணத்தின் மூன்று காட்சிகள். trip_id அவர்களுடன் இணைகிறது.
ஒரு பயணம் தொடங்கும் போது, SDK ஆனது UUIDv4ஐ பதிவுசெய்து, பயணம் முடியும் வரை பதிவுசெய்யப்பட்ட ஒவ்வொரு இடத்திலும் ஓட்டுநர் நிகழ்விலும் முத்திரையிடும். அதே ஐடி பயணச் சுருக்கத்தில் வருகிறது, எனவே “இந்த டிரைவில் என்ன கடுமையான பிரேக்கிங் நிகழ்வுகள் நடந்தன?” மறுகட்டமைப்பை விட ஒரு தேடலாகும்.
பயணம் எப்போது தொடங்கும் என்பதை அறிவது
சாதனம் நிலையான நிலையில் இருந்து நகரும் போது ஒரு பயணம் தொடங்குகிறது. அந்த நேரத்தில் onTripStart ஐடியுடன் பதிவுசெய்யப்பட்ட அனைத்தும் எடுத்துச் செல்லும்:
Tracelet.onTripStart((trip) {
print('Trip ${trip.tripId} started at ${trip.startedAt}');
// Tag your own data with the same key.
analytics.beginDrive(tripId: trip.tripId);
});
Tracelet.onTrip((trip) {
print('Trip ${trip.tripId} covered ${trip.distance} m');
print('From ${trip.startedAt} to ${trip.endedAt}');
});எந்தப் பயணம் இயங்குகிறது என்பதை நீங்கள் எந்த நேரத்திலும் கேட்கலாம்:
final id = Tracelet.currentTripId; // null between tripsபயண அடையாளத்தை அனுப்புவதற்கு முன், ஒரு பயணம் முடிந்தவுடன் மட்டுமே காணக்கூடியதாக இருந்தது - பயணத்தின் முடிவில் onTrip தீ விபத்துகள் மற்றும் முந்தைய சமிக்ஞை இல்லை. பயணத்தின் மூலம் பதிவுகளை குழுவாக்கத் தேவைப்படும் பயன்பாடுகள் onMotionChange இலிருந்து எல்லையை மீண்டும் பெற வேண்டும், இது SDK இன் சொந்தக் கண்டறிதலில் இருந்து நகர்கிறது, ஏனெனில் அது அதன் பின்னால் உள்ள டிபவுன்ஸ் மற்றும் வரம்புகளைக் காணவில்லை.
திரும்பப் படிக்கிறேன்
trip_id வரிசையில் சேமிக்கப்படுகிறது, எனவே இது சேமிக்கப்பட்ட வரலாற்றிலும் நீங்கள் ஒத்திசைக்கும் எதிலும் உயிர்வாழும்:
final events = await Tracelet.getTelematicsEvents(50);
final thisDrive = events.where((e) => e.tripId == someTripId);| எங்கே | புலம் |
|---|---|
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட், நோட்ரான்ஸ்2லேட், நாட்ரான்ஸ்3லேட் |
TripEvent (onTrip இலிருந்து) | tripId, startedAt, endedAt, மேலும் தற்போதுள்ள தூரம்/காலம்/வழிப்புள்ளிகள் |
| நோட்ரான்ஸ்0லேட் | நோட்ரான்ஸ்1லேட் |
| பேலோடை ஒத்திசைக்கவும் | ஒவ்வொரு இருப்பிடம் மற்றும் டெலிமாடிக்ஸ் பதிவிலும் trip_id — பார்க்கவும் டிரேஸ்லெட் ஒத்திசைவு |
தெரிந்து கொள்ள வேண்டிய விதிகள்
- இது ஒளிபுகாது. UUIDv4 எந்த தகவலையும் கொண்டிருக்கவில்லை மற்றும் காலவரிசைப்படி வரிசைப்படுத்தாது. அதை ஒருபோதும் அலச வேண்டாம், அதன் மூலம் ஆர்டர் செய்ய வேண்டாம் -
startedAtமூலம் பயணங்களை ஆர்டர் செய்யுங்கள். - இது மீண்டும் பயன்படுத்தப்படாது. பயண முடிவு ஐடியை நிராகரிக்கிறது; அடுத்த பயணம் ஒரு புதிய பயணம். “முந்தைய பயணத்தை மீண்டும் தொடங்கு” பாதை எதுவும் இல்லை, அது இரண்டாவது பயணத்திற்கு அதே ஐடியை வழங்க முடியும்.
- வரிசையை எழுதும் போது எழுதப்படும். பயணத்தின் போது பதிவுசெய்யப்பட்ட இடம், வேறு பயணம் இயங்கும் போது, பல மணிநேரங்கள் கழித்து பதிவேற்றினாலும், அந்த பயணத்தின் ஐடியை வைத்திருக்கும். இதுவே ஆஃப்லைன் பேக்லாக் சரியாகும்.
- பயணத்தின் தொடக்கத்தைச் சுற்றி சில புள்ளிகள்
nullஐக் கொண்டு செல்கின்றன. பயணத்தைக் கண்டறிதல் ஒரு இயக்க மாற்றத்தைப் பின்பற்றுகிறது, எனவே SDK பயணம் தொடங்கியதாக அறிவிக்கும் முன் சில நிலங்களைச் சரிசெய்கிறது. அவை மீண்டும் நிரப்பப்படவில்லை - மதிப்பு எழுதும் தருணத்தில் நிலையை பதிவு செய்கிறது. nullஎன்பது இயல்பானது. பயண அடையாளத்தை அனுப்புவதற்கு முன் ஒரு பதிப்பால் எழுதப்பட்ட வரிசைகள் மற்றும் பயணங்களைப் போலவே, பயணத்திற்கு வெளியே பதிவுசெய்யப்பட்ட எதற்கும் பயண ஐடி இல்லை.
பயணத்தின் சுருக்கம் இன்னும் onTrip() மூலம் மட்டுமே வழங்கப்படுகிறது - இது SQLite இல் எழுதப்படவில்லை மற்றும் ஒத்திசைக்கப்படவில்லை. trip_id விதிவிலக்கு: இது இருப்பிடங்கள் மற்றும் ஓட்டுநர் நிகழ்வுகளில் தொடர்ந்து இருக்கும், எனவே சுருக்கம் உங்கள் பின்தளத்தை அடையாதபோதும் ஒத்திசைக்கப்பட்ட வரிசைகளில் இருந்து பயணத்தை மறுகட்டமைக்க முடியும்.
டிரைவிங் (சிமுலேஷன்) & டேட்டாபேஸ் அணுகல் இல்லாமல் இதை முயற்சிக்கவும்
ட்ரேஸ்லெட்டில் டெலிமாடிக்ஸ் நிகழ்வுகளைச் சேமிப்பதற்கான பிரத்யேக தரவுத்தள அட்டவணைகள் மற்றும் கண்டறியும் APIகளின் தொகுப்பு ஆகியவை அடங்கும். இவை டிரேஸ்லெட் டாக்டரால் கண்டறியும் மேலடுக்கால் பெரிதும் பயன்படுத்தப்படுகின்றன, ஆனால் உங்கள் ஆப்ஸில் நேரடியாகப் பயன்படுத்தி தனிப்பயன் கண்டறியும் திரைகளை உருவாக்கலாம் அல்லது உங்கள் பாதுகாப்பு ஓட்டங்களைச் சோதிக்கலாம்.
தரவுத்தளத்திலிருந்து டெலிமேடிக்ஸ் மீட்டெடுக்கிறது
ஒவ்வொரு ஓட்டுநர் மற்றும் தாக்க நிகழ்வும் உள்ளூர் SQLite தரவுத்தளத்தில் தானாகவே தொடரும். அபாயகரமான ஓட்டுநர் நடத்தைகளின் வரலாற்றைக் காண்பிக்க இந்தக் கட்டமைக்கப்பட்ட பதிவுகளை நீங்கள் மீட்டெடுக்கலாம்:
// Fetch the 50 most recent telematics events from the database
final events = await Tracelet.getTelematicsEvents(50);
for (final event in events) {
print('Event Type: \${event.eventType}'); // e.g. harsh_braking, crash
print('Severity: \${event.severity}');
print('Location: \${event.latitude}, \${event.longitude}');
}நிகழ்வுகள் மீண்டும் வரும் புதியது முதலில், மற்றும் ஒத்திசைத்தல் அவற்றை இதிலிருந்து அகற்றாது
காண்க - syncTelematics ஐ இயக்குவது நிகழ்வுகளை பதிவேற்றுகிறது ஆனால் உங்கள் உள்ளூர் வரலாற்றை விட்டு விடுகிறது
அப்படியே.
அவற்றை உங்கள் பின்தளத்திற்கு அனுப்புகிறது
HttpConfig.syncTelematics: true ஐ அமைக்கவும், ஒத்திசைக்கப்படாத நிகழ்வுகள் உங்கள் இயல்பான சவாரி
இருப்பிட ஒத்திசைவு - அதே இடுகையில் உள்ள ரூட்-லெவல் telematics வரிசை, அல்லது அவற்றின் சொந்த
நீங்கள் HttpConfig.telematicsUrl ஐ அமைக்கும் போது கோருங்கள். தோல்வியுற்ற பதிவேற்றங்கள் நிகழ்வுகளை வைத்திருக்கும்
அவர்களை இறக்கி விட வரிசையில் நின்றது. கம்பி திட்டத்திற்கு, தொகுதி வரம்புகள் மற்றும்
தனி-இறுதிப் புள்ளி வர்த்தகம், பார்க்க
டெலிமாடிக்ஸ் ஒத்திசைவு 📖.
நிகழ்வுகளை உருவகப்படுத்துதல்
நீங்கள் போலி டெலிமாடிக்ஸ் நிகழ்வுகளை நேரடியாக நேட்டிவ் டிராக்கிங் இன்ஜின்களில் செலுத்தலாம். இது உங்கள் ஆப்ஸின் எதிர்வினையைச் சோதிப்பதற்கு (விபத்தில் SOS திரையைக் காட்டுவது போன்றவை) அல்லது உங்கள் UI கூறுகளைச் சோதிப்பதற்கு ஏற்றது. பொத்தான்கள் வழியாக நிகழ்வுகளைத் தூண்டுவதற்கு டெவலப்பர்களை அனுமதிக்க, எடுத்துக்காட்டு பயன்பாட்டின் டிரைவிங் & பாதுகாப்பு பக்கம் மற்றும் ட்ரேஸ்லெட் டாக்டர் மேலடுக்கு இந்த API ஐப் பயன்படுத்துகின்றன.
// Simulate a harsh braking event (named arguments)
await Tracelet.simulateTelematicsEvent(
eventType: 'harsh_braking',
severity: 0.85, // 0.0 to 1.0
latitude: 37.422,
longitude: -122.084,
);தரவுத்தளத்தை அழிக்கிறது
நீங்கள் கண்டறியும் நிலையை மீட்டமைக்க வேண்டும் அல்லது உள்ளூர் தரவுத்தளத்திலிருந்து டெலிமாடிக்ஸ் நிகழ்வுகளின் வரலாற்றை அழிக்க வேண்டும் என்றால், நீங்கள் வரிசையை அகற்றலாம்:
await Tracelet.destroyTelematicsEvents();தானியங்கு சோதனைகளில், நீங்கள் டார்ட்டிலிருந்து நேரடியாக என்ஜின்களை இயக்கலாம் (அவை flutter_rust_bridge வழியாக வெளிப்படும்) — example/integration_test/behavior_simulation_test.dart ஐப் பார்க்கவும்.
அனுமதிகள்
- டிரைவிங் நிகழ்வுகள் நீங்கள் ஏற்கனவே பயன்படுத்தும் இருப்பிட அனுமதி மட்டுமே தேவை கண்காணிப்பு - கூடுதல் எதுவும் இல்லை.
- போக்குவரத்து முறை மற்றும் விபத்து/வீழ்ச்சி முடுக்கமானியைப் பயன்படுத்தவும். ஆண்ட்ராய்டில் அது இயக்கம் கண்டறிதலுக்காக ஏற்கனவே இயங்குகிறது (புதிய அனுமதி இல்லை). iOS இல், சேர்த்தல் மோஷன் & ஃபிட்னஸ் பயன்பாட்டு விளக்கம் துல்லியத்தை மேம்படுத்துகிறது. பார்க்கவும் iOS மற்றும் Android அமைவு பக்கங்கள்.
தெரிந்து கொள்வது நல்லது
- சாதனத்தில் & நிர்ணயம் — அனைத்து கண்டறிதல்களும் பகிரப்பட்ட ரஸ்ட் மையத்தில் இயங்கும். இல்லை நெட்வொர்க், கிளவுட் மாடல் இல்லை, Android மற்றும் iOS இல் அதே முடிவுகள்.
- டிரைவிங் நிகழ்வுகள் இணையத்திலும் வேலை செய்யும் (அவை ஜிபிஎஸ்-பெறப்பட்டவை).
- பக்க-சேனல் - இந்த நிகழ்வுகள் உங்களின் இயல்பான முதலில் வழங்கப்படும்
onLocationஸ்ட்ரீம்; அவர்கள் உங்கள் இருப்பிடத்தையோ அல்லது ஓடோமீட்டரையோ மாற்ற மாட்டார்கள் நீங்கள்syncTelematicsஉடன் தேர்வு செய்தால் மட்டுமே உங்கள் ஒத்திசைவு பேலோடில் சேரவும்.