gyanmeet 1.1.0 copy "gyanmeet: ^1.1.0" to clipboard
gyanmeet: ^1.1.0 copied to clipboard

PlatformAndroid

Gyanmeet meeting SDK for Flutter — a self-contained video meeting widget with host controls, chat, polls, batch exams, certificate verification, and optional on-device AI proctoring.

1.1.0 #

Passive liveness (anti-spoof) #

The face detector answers "is there a face-shaped pattern here", not "is there a live person here" — a printed photo, a pencil sketch or a phone screen held up to the lens all registered as a present, attentive participant for a whole meeting. Face presence is now checked against three signals computed on the face region: skin chroma, texture detail, and micro-motion between ticks.

  • New onSpoofSuspectedChanged callback on GyanmeetMeeting. It fires on the first failing sample, not at the strike threshold, so you can show a warning state that outranks presence while the participant can still correct it. It clears on the next clean sample.
  • A sustained spoof raises a ProctoringViolation(type: spoof), after three consecutive failing samples and paced by a 30s cooldown, so it spends warnings at the same rate the absence check does rather than burning them in seconds. Backends running the AI violation policy count it as a face mismatch.
  • Thresholds live in lib/src/constants/config.dart as kLiveness…, alongside the existing fallback timings.

Detection only runs on frames that already contain a face and only after a 5s warm-up, so camera auto-exposure settling is not mistaken for a flat print. The motion window is dropped whenever the face leaves frame, the camera goes off or a break starts — samples minutes apart would otherwise read as a frozen image.

These are heuristics, not a certified anti-spoof model: a colour video replay on a large screen can still pass. They stop the cheap attacks.

Note for existing consumers #

  • ProctoringViolationType gained a spoof value. A switch expression over it stops compiling until you add a case; a switch statement keeps working and only warns.

1.0.1 #

No library changes — documentation and packaging only.

  • The README no longer shows enableAiMonitoring as a GyanmeetConfig field. It is not one, so the usage snippet did not compile as written. AI monitoring is enabled per meeting by the server, not by consumer config.
  • The example app is no longer part of the published package. It is a local harness for developing the SDK, not a reference for using it; usage lives in the README.

1.0.0 #

First release of gyanmeet — a self-contained Flutter meeting widget for Gyanmeet.

Meetings #

  • One embedded widget for the whole meeting: join flow with an optional PreJoin device check, video grid with pagination, debounced active-speaker pin and fullscreen tap, mic / camera / screen-share toggles, and hand raise.
  • Host controls: mute or disable a participant's audio and video, promote and demote, remove, end the meeting for everyone, and toggle chat live.
  • Chat in open or host-moderated mode, a participants panel, and polls with creation, voting and results.
  • No API key ever reaches the client. Your backend mints a short-lived external-join token and the SDK performs the validate-join round-trip itself.
  • Adaptive bandwidth: only the visible page and the active speaker are subscribed, screen-share is always subscribed, and the local upload is paused while nobody is viewing it.

AI proctoring #

  • Optional on-device monitoring for face presence, gaze direction in exam mode, and identity. Nothing is enforced by the SDK itself — violations arrive on your callbacks and you decide what to do with them.
  • Identity verification against a MobileFaceNet model bundled with the package, so it works without consumer setup; the model and match threshold are both configurable, and identity checks can be switched off entirely.
  • An optional identity gate in front of the meeting, in verify mode against a reference photo or enroll mode when none is supplied.
  • Backends that implement the AI violation policy get server-enforced warnings and removal, detected automatically. The SDK draws its own warning and removal UI for whichever callbacks are left unset.
  • Hosts, co-hosts and platform admins are never monitored.
  • Frames where the face is clipped by the edge are skipped rather than compared, and a single dropped detection is treated as noise, so neither produces a false violation.

Exams and certificates #

  • Batch exams sat inside the class meeting, with host start/end, optional section selection, server-owned timing and a results view.
  • Participant result lookup and public certificate verification, with no session required.

Configuration #

  • GyanmeetConfig covers chat and video modes, panel and header visibility, pre-join, initial device state, break handling, brand colour, dark mode, and the proctoring knobs. faceComparisonInterval bounds identity comparison work on lower-end devices while face presence keeps its own cadence.
1
likes
120
points
143
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Gyanmeet meeting SDK for Flutter — a self-contained video meeting widget with host controls, chat, polls, batch exams, certificate verification, and optional on-device AI proctoring.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

dio, flutter, google_mlkit_face_detection, image, livekit_client, livekit_components, path_provider, provider, tflite_flutter

More

Packages that depend on gyanmeet