# डिवाइस ध्वनि और उपयोगिताएँ

> Device फ़ेसड का बाकी हिस्सा — beep, vibrate, clipboard, वायरलेस रेडियो, TTS/STT, प्लेटफ़ॉर्म।

Source: https://crossfly.dev/hi/docs/data-and-services/device-sound-and-misc — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# डिवाइस ध्वनि और उपयोगिताएँ

**`Device`** फ़ेसड छोटे और पोर्टेबल संसाधनों को एक साथ लाता है। सब कुछ स्टैटिक है।

## फ़ीडबैक और सिस्टम
```java
Device.beep();              // सिस्टम बीप
Device.vibrate(200);        // 200 ms कंपन
Device.sleep(500);          // वर्तमान थ्रेड को 500 ms रोकें
int livre = Device.getFreeMemory();
Device.show("https://exemplo.com");   // OS के बाहरी ऐप में URL/संसाधन खोलें
```

## क्लिपबोर्ड
```java
Device.clipboardCopy("texto");
String colado = Device.clipboardPaste();
```

## पहचान और प्लेटफ़ॉर्म
```java
if (Device.platform.isMobile()) { ... }     // ANDROID/IPHONE/IPAD
if (Device.platform.isDesktop()) { ... }    // WINDOWS/LINUX/MACOS
if (Device.platform.isIOS()) { ... }        // IPHONE/IPAD
String base = Device.homeFolder;            // ऐप की बेस डायरेक्टरी
```
`Platform`: `JAVA` · `WINDOWS` · `LINUX` · `IPHONE` · `ANDROID` · `IPAD` · `MACOS`.

## वायरलेस रेडियो
```java
WirelessState wifi = Device.getWirelessState(WirelessType.WIFI);   // UNSUPPORTED/DISABLED/ENABLED
Device.enableWireless(WirelessType.BLUETOOTH, true);
```
`WirelessType`: `WIFI` · `PHONE` · `BLUETOOTH`.

## आवाज़ — TTS और STT
```java
Device.textToVoice("Olá, mundo");   // टेक्स्ट बोलें (TTS)

Device.voiceToText(new Device.VoiceToTextListener() {   // वाक् पहचान (STT)
   public void onStart() {}
   public void onFinish() {}
   public void onResult(String texto) { Component.onUI(() -> campo.text(texto)); }
   public void onError(int code, String msg) { Component.onUI(() -> Hint.show(msg, 2000)); }
});
```
> STT के कॉलबैक **paint thread के बाहर** आते हैं → `Component.onUI(...)` के साथ वापस लौटें।

## ⚠️ माइग्रेशन नोट्स
- `Sound.*` और `RadioState` **`Device` में समाहित कर दिए गए हैं** — `Sound.tone`/`play` **अब मौजूद नहीं हैं**।
- **Web/TeaVM** पर, इसका काफ़ी हिस्सा *stub* है (वाइब्रेशन, रेडियो, आवाज़) — Web टारगेट को संभालें।

## सर्वोत्तम अभ्यास
- आवाज़/रेडियो के कॉलबैक `onUI(...)` के साथ UI में लौटते हैं।
- किसी रेडियो के मौजूद होने का अनुमान लगाने से पहले `WirelessState.UNSUPPORTED` की जाँच करें।

## सामान्य त्रुटियाँ
- `Sound.play(...)`/`RadioState` (हटा दिए गए) को कॉल करना — `Device` का उपयोग करें।
- STT के `onResult` में `onUI` के बिना सीधे UI को छूना।

## यह भी देखें
- [बायोमेट्री](/docs/data-and-services/device-biometry) · [बैकग्राउंड में काम](/docs/data-and-services/background-work)
