ios - 脱獄 - 機能制限 解除 裏ワザ




iOSのデバイスボリュームを変更する方法-音楽ボリュームではない (5)

brush51の質問に答えるには:

どうやってやるの? DEVICEの音量を変更するだけですか?

0x7fffffff提案:

MPVolumeView(音量スライダ)は、デバイスの音量をプログラムで変更することはできませんが、デバイスの音量を変更するには、ユーザーの操作だけが必要です。

だから、AppleはMPVolumeView使用を推奨しているMPVolumeView 、これを思いついた:

volumeSliderプロパティを追加:

@property (nonatomic, strong) UISlider *volumeSlider;

MPVolumeView 、あなたのビューのどこかに追加します(フレームなしで非表示にすることも、 showsRouteButton = NOおよびshowsVolumeSlider = NOために空にすることもできます)。

MPVolumeView *volumeView = [MPVolumeView new];
volumeView.showsRouteButton = NO;
volumeView.showsVolumeSlider = NO;
[self.view addSubview:volumeView];

UISliderへの参照を見つけて保存する:

__weak __typeof(self)weakSelf = self;
[[volumeView subviews] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    if ([obj isKindOfClass:[UISlider class]]) {
        __strong __typeof(weakSelf)strongSelf = weakSelf;
        strongSelf.volumeSlider = obj;
        *stop = YES;
    }
}];

UIControlEventValueChangedターゲットアクションを追加:

[self.volumeSlider addTarget:self action:@selector(handleVolumeChanged:) forControlEvents:UIControlEventValueChanged];

そして、音量の変化を検出します(つまり、ハードウェア音量コントロールによって)。

- (void)handleVolumeChanged:(id)sender
{
    NSLog(@"%s - %f", __PRETTY_FUNCTION__, self.volumeSlider.value);
}

また別の方法で、ボリュームを次のように設定できます。

self.volumeSlider.value = < some value between 0.0f and 1.0f >;

これが(そしてAppleがMPVolumeViewからMPVolumeSliderを削除しないことが)助けてくれることを願っています。

iOS(iphone)でデバイスの容量を変更したい

私は、以下の行で音楽ライブラリの音量を変更できることを知っています:

//implement at first MediaPlayer framework
MPMusicPlayerController *musicPlayer = [MPMusicPlayerController iPodMusicPlayer];
musicPlayer.volume = 1;

しかし、それは私の目標ではありません。
私はデバイスのボリュームを変更したい、またはリンガーの音量を言いたい。

どうやってやるの? DEVICEの音量を変更するだけですか?


iPodMusicPlayerの代わりにapplicationMusicPlayerを使用してシステムボリュームを設定する必要があります:

#import <MediaPlayer/MediaPlayer.h>
musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
musicPlayer.volume = 1; // max volume
musicPlayer.volume = 0; // min volume (mute)
musicPlayer.volume = 0.0625; // 1 bar on the overlay volume display

ここで私がやったことがあります:

func setSystemVolume(volume: Float) {
    let volumeView = MPVolumeView()

    for view in volumeView.subviews {
        if (NSStringFromClass(view.classForCoder) == "MPVolumeSlider") {
            let slider = view as! UISlider
            slider.setValue(volume, animated: false)
        }
    }
}

MPMusicPlayerControllerプロパティvolumeはiOS 7では廃止されました。これはあなたがそれを行うことができる方法です。



以下は、システムのボリュームを設定することができ、変更を通知する小さなラッパークラスです(あなた自身の変更レスポンダをsetTarget:action :)に渡します)。

編集 :MPVolumeViewコントロールを非表示にしたり、サブビューとして追加したりしないと、プログラムで音量を変更するたびに、画面の中央にデフォルトの音量四角形が表示されます。 システムが何をしているのか気に入らなければ、解決策は画面外にビュー座標を設定することです。 私はこれを反映するために少し下に私のコードを編集しました。

@import MediaPlayer;


@interface SysVolumeControl : MPVolumeView
@property (nonatomic) float value; // from 0 to 1.0
- (void)setTarget:(id)target action:(SEL)action;
@end


@implementation SysVolumeControl
{
    UISlider* _slider;
}

- (id)init
{
    if (self = [super initWithFrame:CGRectMake(-300, 0, 200, 50)])
    {
        for (UIView* view in self.subviews)
        {
            if ([view isKindOfClass:UISlider.class])
            {
                _slider = (UISlider*)view;
                break;
            }
        }
    }
    return self;
}

- (float)value
    { return _slider.value; }

- (void)setValue:(float)value
    { _slider.value = value; }

- (void)setTarget:(id)target action:(SEL)action
    { [_slider addTarget:target action:action forControlEvents:UIControlEventValueChanged]; }

@end

次に、インスタンスを作成して使用します。

SysVolumeControl* sysVolumeControl = [SysVolumeControl new];
[myView addSubview:sysVolumeControl];
sysVolumeControl.value = 1.0;
[sysVolumeControl setTarget:self action:@selector(mySysVolumeResponder:)];




volume