Skip to content

bug: Shake not worked on android 15 #6456

@RezaErfani67

Description

@RezaErfani67

Duplicate Check

Describe the bug

Shake not worked in my android mobile

Code sample

Code
import flet as ft


def main(page: ft.Page):
    page.services.append(
        ft.ShakeDetector(
            minimum_shake_count=2,
            shake_slop_time_ms=300,
            shake_count_reset_time_ms=1000,
            on_shake=lambda _: page.add(ft.Text("Shake detected!")),
        )
    )

    page.add(
        ft.SafeArea(
            content=ft.Column(
                controls=[ft.Text("Shake your device!")],
            ),
        )
    )


if __name__ == "__main__":
    ft.run(main)

To reproduce

import flet as ft
from flet_geolocator import Geolocator, GeolocatorPositionChangeEvent


@ft.component
def SensorsApp():
    # Stateها
    accelerometer_text, set_accelerometer_text = ft.use_state("در انتظار دریافت داده...")
    gyroscope_text, set_gyroscope_text = ft.use_state("در انتظار دریافت داده...")
    magnetometer_text, set_magnetometer_text = ft.use_state("در انتظار دریافت داده...")
    geolocator_text, set_geolocator_text = ft.use_state("در انتظار دریافت داده...")
    shake_text, set_shake_text = ft.use_state("در انتظار تکان دادن...")

    # هندلر شیک دیتکتور
    def on_shake(_):
        set_shake_text("✅ تکان خوردن تشخیص داده شد!")
        # می‌توانید بعد از 2 ثانیه متن را برگردانید
        import asyncio
        async def reset_text():
            await asyncio.sleep(2)
            set_shake_text("در انتظار تکان دادن...")

        # اجرای ریست متن بعد از 2 ثانیه
        ft.run_coroutine(reset_text())

    # هندلرهای سایر سنسورها (Accelerometer, Gyroscope, Magnetometer)
    async def on_accelerometer(e: ft.AccelerometerReadingEvent):
        set_accelerometer_text(f"X: {e.x:.2f} m/s²\nY: {e.y:.2f} m/s²\nZ: {e.z:.2f} m/s²")

    async def on_gyroscope(e: ft.GyroscopeReadingEvent):
        set_gyroscope_text(f"X: {e.x:.2f} rad/s\nY: {e.y:.2f} rad/s\nZ: {e.z:.2f} rad/s")

    async def on_magnetometer(e: ft.MagnetometerReadingEvent):
        set_magnetometer_text(f"X: {e.x:.2f} μT\nY: {e.y:.2f} μT\nZ: {e.z:.2f} μT")

    # هندلر موقعیت‌یاب - کاملاً ساده
    async def on_geolocator_position(e: GeolocatorPositionChangeEvent):
        set_geolocator_text(
            f"عرض: {e.latitude:.6f}°\n"
            f"طول: {e.longitude:.6f}°\n"
            f"دقت: {e.accuracy:.1f} متر"
        )

    async def on_geolocator_error(e):
        set_geolocator_text("⚠️ خطا در دریافت موقعیت\nلطفاً GPS را فعال کنید")

    # ثبت سنسورها
    ft.use_ref(lambda: ft.Accelerometer(on_reading=on_accelerometer, enabled=True))
    ft.use_ref(lambda: ft.Gyroscope(on_reading=on_gyroscope, enabled=True))
    ft.use_ref(lambda: ft.Magnetometer(on_reading=on_magnetometer, enabled=True))

    # ثبت ShakeDetector
    ft.use_ref(lambda: ft.ShakeDetector(
        minimum_shake_count=2,
        shake_slop_time_ms=300,
        shake_count_reset_time_ms=1000,
        on_shake=on_shake,
    ))

    # ثبت موقعیت‌یاب - فقط با ضروری‌ترین تنظیمات
    ft.use_ref(lambda: Geolocator(
        on_position_change=on_geolocator_position,
        on_error=on_geolocator_error
    ))

    # تابع کمکی برای ساخت کارت سنسورها (بدون تغییر)
    def sensor_card(title, icon, value, color):
        return ft.Container(
            content=ft.Column([
                ft.Row([
                    ft.Icon(icon, color=color, size=24),
                    ft.Text(title, size=18, weight=ft.FontWeight.BOLD, color=color),
                ], spacing=10),
                ft.Divider(height=1, color=color),
                ft.Text(value, size=14, text_align=ft.TextAlign.CENTER),
            ], spacing=10),
            padding=15,
            bgcolor=ft.Colors.WHITE,
            border_radius=15,
            border=ft.border.all(2, color),
            shadow=ft.BoxShadow(
                spread_radius=1,
                blur_radius=10,
                color=ft.Colors.BLACK12,
            ),
        )

    return ft.Column(
        [
            ft.Text("سنسورهای دستگاه", size=28, weight=ft.FontWeight.BOLD),
            ft.Text("اطلاعات لحظه‌ای سنسورها", size=14, color=ft.Colors.GREY),
            ft.Divider(height=20),
            ft.ResponsiveRow([
                ft.Column(col={"sm": 12, "md": 6}, controls=[
                    sensor_card("شتاب‌سنج", ft.Icons.SPEED, accelerometer_text, ft.Colors.BLUE),
                ]),
                ft.Column(col={"sm": 12, "md": 6}, controls=[
                    sensor_card("ژیروسکوپ", ft.Icons.ROTATE_RIGHT, gyroscope_text, ft.Colors.GREEN),
                ]),
                ft.Column(col={"sm": 12, "md": 6}, controls=[
                    sensor_card("مغناطیس‌سنج", ft.Icons.COMPASS_CALIBRATION, magnetometer_text, ft.Colors.ORANGE),
                ]),
                ft.Column(col={"sm": 12, "md": 6}, controls=[
                    sensor_card("موقعیت‌یاب GPS", ft.Icons.LOCATION_ON, geolocator_text, ft.Colors.RED),
                ]),
                ft.Column(col={"sm": 12, "md": 12}, controls=[
                    sensor_card("تشخیص تکان خوردن", ft.Icons.HANDSHAKE_SHARP, shake_text, ft.Colors.PURPLE),
                ]),
            ], spacing=15),
        ],
        horizontal_alignment=ft.CrossAxisAlignment.CENTER,
        scroll=ft.ScrollMode.AUTO,
    )


ft.run(lambda page: page.render(SensorsApp), port=8550)

Expected behavior

No response

Screenshots / Videos

Captures

[Upload media here]

Operating System

Windows

Operating system details

11

Flet version

0.84.0

Regression

I'm not sure / I don't know

Suggestions

No response

Logs

Logs
[Paste your logs here]

Additional details

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions