হেডফোনটি প্লাগ আনপলগে নিরব করুন?


10

আমি আমার হেডফোনগুলি আনপ্লাগল করার জন্য আমার কম্পিউটার থেকে শব্দটি নিঃশব্দ করার কোনও উপায় আছে (যেমন কোনও ফোন তোলে) তখন আমার স্পিকারের বাইরে শব্দ বাজানো বন্ধ করে দেয়?




আমি এখানে অসীম লুপগুলি ব্যবহার না করে একটি উত্তর পোস্ট করেছি - Askubuntu.com/a/1005144/470017
Al.G.

উত্তর:


10

একটি আনপ্লাগ কীভাবে সনাক্ত করা যায়

মূলত আমার জন্য যা কাজ করেছিল তা হ'ল:

# When plugged in:
cat /proc/asound/card0/codec#0 > pluggedin.txt

# When not plugged in:
cat /proc/asound/card0/codec#0 > notplugged.txt

# Then compare the differences
diff pluggedin.txt notplugged.txt

আমার জন্য পার্থক্যটি 'অ্যাম্প-আউট ভ্যালস' এর অধীনে 'নোড 0x16' তে ছিল:

Node 0x16 [Pin Complex] wcaps 0x40058d: Stereo Amp-Out             Node 0x16 [PinComplex] wcaps 0x40058d: Stereo Amp-Out
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1         Amp-Out caps:ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]                                    |    Amp-Out vals:  [0x00 0x00]

সুতরাং আমি খুঁজে পাওয়া পার্থক্য উপর সনাক্তকরণ ভিত্তিক।

নিঃশব্দ করা

এই জ্ঞানের সাহায্যে আপনার পটভূমিতে স্ক্রিপ্ট চলতে পারে। স্ক্রিপ্টগুলি আনপ্লাগড করা থাকলে আপনার স্পিকারগুলি amixer sset Master playback 0%( যেমন বা অন্য কোনও কমান্ড) ব্যবহারের মতোকে নিঃশব্দ করে ।

#!/bin/bash
# This scripts detecs unplugging headphones.

oldstatus="unrelated string"
while [ 1 ]; do
    # The following line has to be changed depending on the difference (use diff) in '/proc/asound/card0/code#0'
    status=$(grep -A 4 'Node 0x16' '/proc/asound/card0/codec#0' |  grep 'Amp-Out vals:  \[0x80 0x80\]')
    if [ "$status" != "$oldstatus" ]; then
        if [ -n "$status" ]; then
            echo "Plugged in"
             amixer sset Master playback 80% # Set volume to 80%
            oldstatus="$status"
        else
            echo "Unplugged"
            amixer sset Master playback 0%  # Mute
            oldstatus="$status"
        fi
    fi
done

আপনি এটিকে সম্পাদনযোগ্য করে তুলতে chmod +x scriptname.shএবং স্টার্টআপ অ্যাপ্লিকেশনগুলিতে রাখতে পারেন। আপনার নিজের পার্থক্যটি খুঁজে পাওয়ার /proc/asound/card0/codec#0পরেও প্লাগ সনাক্তকরণ সামঞ্জস্য করতে হবে (একাধিক সাউন্ডকার্ডের জন্য এখানে নম্বরগুলিও পরিবর্তন করতে পারেন)।

সম্পর্কিত লিংক:

https://wiki.ubuntu.com/Audio/PreciseJackDetectionTesting

/unix/25776/detecting-headphone-connection-disconnection-in-linux

আন-/ প্লাগড হেডফোনগুলি কীভাবে স্বয়ংক্রিয়ভাবে ভলিউম স্তর পরিবর্তন করবেন?


এটি পুদিনা 17.3 এ পুরোপুরি কাজ করে। ধন্যবাদ!
ব্রিসকোই

4
অসীম whileলুপের সাথে একটি স্ক্রিপ্ট থাকা (এমনকি সামান্য ঘুমের নির্দেশ ছাড়াই) পটভূমিতে অবিচ্ছিন্নভাবে চালানো একটি আদর্শ সমাধান থেকে অনেক দূরে; এটি একটি সিগু এবং ব্যাটারি হত্যাকারী ছাড়াও একটি কুরুচিপূর্ণ এবং হ্যাকি কাজ। আমি এটি চেষ্টা করেছি এবং ধ্রুবক 5% সিপিইউ ব্যবহারের (ব্রাউজার, স্পটফাইফ, টার্মিনাল, আইডিই, টেলিগ্রাম এবং অন্যান্য অ্যাপ্লিকেশন সহ) 45% ধ্রুবক সিপিইউ ব্যবহারে গিয়েছি।
লেয়ার্টস

এই সমাধানটি মারাত্মকভাবে খারাপ নাগরিক, যেমন @ লেয়ারস উল্লেখ করেছেন। দয়া করে কখনও এটি করবেন না। ভাল নাগরিক সমাধানের জন্য, acpi_listenএই উত্তরের লিঙ্কগুলির মধ্যে একটিতে প্রস্তাবিত হিসাবে ব্যবহার করুন ।
ডন হ্যাচ

0

এটি আমার জন্য উবুন্টু 14.04 এ কাজ করেছিল:

"হেডফোনগুলি এটিকে নিঃশব্দ করে দিন head প্রবেশ করুন এবং হেডফোনগুলি সন্নিবেশ করুন এবং ভলিউম বাড়ান head

ক্রেডিট: উপর RevDrStrangelove https://www.reddit.com/r/LifeProTips/comments/369k76/lpt_request_automaticly_mute_laptop_after_headset/


0

উবুন্টু -16.10 এর জন্য আমি এই উত্তরে কিছু পরিবর্তন করেছি ।

oldresult="Some Random String"

while [ 1 ]; do
        # incase of plugged out result will contain some data
        result=$(grep "EAPD 0x2: EAPD" /proc/asound/card0/codec#0)

        # checking for oldresult if not same then only go inside
        if [ "$oldresult" != "$result" ]; then
                oldresult=$result
                if [[ -z "$result" ]]; then
                        notify-send "Plugged In"
                        amixer sset Master playback 80% # Set volume to 80%
                 else
                        notify-send "Plugged Out"
                        amixer sset Master playback 0% # Set volume to 0%
                 fi
        fi
done

এই উত্তর এবং এটি উভয়ই খারাপ নাগরিকের কাছ থেকে আসা উত্তর। তারা কাজ করছে বলে মনে হচ্ছে, তবে তারা সিস্টেম সংস্থানগুলিতে ঝাঁকুনি দেয় যা স্কেল করে না - একই সময়ে কয়েকটি প্রোগ্রাম চালায় এবং এটি সিস্টেমটিকে নষ্ট করে দেয়। দয়া করে কখনও এটি করবেন না। এর পরিবর্তে আপনি acpi_listen বা অনুরূপ জড়িত সমাধানগুলির একটি ব্যবহার করতে পারেন।
ডন হ্যাচ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.