Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में आर्बिट्रेरी टोन कैसे प्ले करें?

Android में प्रोग्रामेटिकली टोन जनरेट और प्ले करना

यह उदाहरण दर्शाता है कि AudioTrack का उपयोग करके साइन वेव टोन कैसे जनरेट करें और प्ले करें। यह सिंथेसाइजर, गेम साउंड या टेस्टिंग के लिए उपयोगी है।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project चुनें।

चरण 2: लेआउट फ़ाइल (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="16dp"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="200dp"
        android:layout_height="300dp"
        android:src="@drawable/ic_music_note_black_24dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Increase the emulator Volume, Listen to the arbitrary tone!"
        android:textSize="16sp"
        android:textStyle="bold|italic" />

</LinearLayout>

चरण 3: MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.os.Bundle;
import android.os.Handler;

public class MainActivity extends AppCompatActivity {
    private final int duration = 10; // सेकंड
    private final int sampleRate = 8000;
    private final int numSamples = duration * sampleRate;
    private final double[] sample = new double[numSamples];
    private final byte[] generatedSnd = new byte[2 * numSamples];
    Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onResume();
        new Thread(() -> {
            genTone();
            handler.post(this::playSound);
        }).start();
    }

    void genTone() {
        for (int i = 0; i < numSamples; ++i) {
            double freqOfTone = 440; // A4 नोट
            sample[i] = Math.sin(2 * Math.PI * i / (sampleRate / freqOfTone));
        }
        int idx = 0;
        for (double dVal : sample) {
            short val = (short) (dVal * 32767);
            generatedSnd[idx++] = (byte) (val & 0x00ff);
            generatedSnd[idx++] = (byte) ((val & 0xff00) >>> 8);
        }
    }

    void playSound() {
        AudioTrack audioTrack = new AudioTrack(
            AudioManager.STREAM_MUSIC,
            sampleRate,
            AudioFormat.CHANNEL_OUT_MONO,
            AudioFormat.ENCODING_PCM_16BIT,
            generatedSnd.length,
            AudioTrack.MODE_STATIC
        );
        audioTrack.write(generatedSnd, 0, generatedSnd.length);
        audioTrack.play();
    }
}

चरण 4: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

नोट

यह बेसिक उदाहरण है। प्रोडक्शन में ऑडियो फोकस मैनेजमेंट, एरर हैंडलिंग और रिसोर्स क्लीनअप (audioTrack.release()) जरूर जोड़ें।

  1. एंड्रॉइड में BroadcastReceiver के साथ नोटिफिकेशन कैसे बनाएँ? एंड्रॉइड में BroadcastReceiver के साथ नोटिफिकेशन कैसे बनाएँ?

    यह ट्यूटोरियल दर्शाता है कि **BroadcastReceiver** के साथ **AlarmManager** का उपयोग करके नोटिफिकेशन कैसे बनाए और शेड्यूल किए जाएँ। यह पैटर्न ऐप प्रोसेस न चलने पर भी सटीक समय-आधारित डिलीवरी सक्षम करता है। आर्किटेक्चर अवलोकन MainActivity → AlarmManager.setExact() → PendingIntent (Broadcast) → My

  1. Android में SearchView से RecyclerView कैसे फ़िल्टर करें? Android में SearchView से RecyclerView कैसे फ़िल्टर करें?

    Android में SearchView से RecyclerView फ़िल्टर करना यह ट्यूटोरियल दिखाता है कि कैसे RecyclerView में SearchView का उपयोग करके रियल-टाइम फ़िल्टरिंग इम्प्लीमेंट की जाती है, Filterable इंटरफेस और कस्टम एडाप्टर के साथ। चरण 1: प्रोजेक्ट और निर्भरताएं Android Studio में नया प्रोजेक्ट बनाएं। RecyclerView

  1. Phoenix OS के साथ PC पर Android कैसे चलाएं Phoenix OS के साथ PC पर Android कैसे चलाएं

    Phoenix OS Android पर आधारित एक PC ऑपरेटिंग सिस्टम है, जो Windows और Mac कंप्यूटर दोनों के साथ संगत है। वर्तमान संस्करण Android 7.1 का समर्थन करता है और लैपटॉप, डेस्कटॉप PC और टैबलेट पर चलने के लिए डिज़ाइन किया गया है। लिखने योग्य होने के कारण, इसे आसानी से फ्लैश ड्राइव पर ले जाया जा सकता है और दूस