質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

350閲覧

Swift4 slider操作時に音量を確かめたい

globalplus

総合スコア119

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/08/28 10:39

編集2018/08/29 04:48

目覚ましアプリを作っていますswift初心者です

sliderでアラームの音量を確かめてから設定できるようにしたいです。
コード自体はサイトを見ながらやって見たのですがsliderをいじってもmp3ファイルが鳴りません。
よろしければ教えて下さい。宜しくお願いします。

該当のソースコード

swift

1import UIKit 2import AVFoundation 3 4class FirstSwitchViewController: UIViewController { 5 6 var audioPlayer: AVAudioPlayer! 7 var volumeSlider = UISlider() 8 @IBOutlet weak var label: UILabel! 9 @IBAction func back(_ sender: UIBarButtonItem) 10 { 11 self.dismiss(animated: true, completion: nil) 12 } 13 @IBAction func volumeChange(_ sender: UISlider) 14 { 15 let value = round(sender.value * 100)/1 16 volumeSlider.value = sender.value 17 label.text = "(value)" 18 audioPlayer.volume = volumeSlider.value 19 } 20 21 override func viewDidLoad() { 22 super.viewDidLoad() 23 24 if let url=Bundle.main.url(forResource:"2",withExtension:".mp3" ){ 25 26 do { 27 audioPlayer = try AVAudioPlayer(contentsOf:url) 28 audioPlayer?.play(atTime:1 * 10) 29 30 }catch{ 31 audioPlayer = nil 32 } 33 }else{ 34 fatalError("Url is nil") 35 } 36 37 } 38 39} 40

試したこと

http://bakapro.seesaa.net/article/429338314.html
このサイトを参考にしました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2018/08/29 00:15

スライダーとか関係なく、普通にmp3を再生するのは出来るのでしょうか?
globalplus

2018/08/29 01:53

すみませんそれは出来ています。
fuzzball

2018/08/29 05:35

スライダーのminimumValue/maximumValue の値を教えて下さい。
globalplus

2018/08/30 09:50

すみません返信がきているのに気が付いていませんでした。minimum 0.0 と maximum100.0です
guest

回答1

0

ベストアンサー

質問文をよく読まずに回答してしまったのですが、スライダーでボリュームをいじったときに、
再生ボタンなどを押さずにどれくらいのボリュームか音を鳴らして確認したいということでいいのでしょうか?

再生ができているのならば、
@IBActionのUISliderへの接続先をvalueChangedにして(デフォルトだっけか?)、

イメージ説明

再生してあげれば、値が変わったときに(たぶんSliderの丸い部分から指を話した時に)音がなるのでは?

swift

1@IBAction func volumeChange(_ sender: UISlider) 2 { 3 let value = round(sender.value * 100)/1 4 volumeSlider.value = sender.value 5 label.text = "(value)" 6 audioPlayer.volume = volumeSlider.value 7 // 再生するだけだけど。これで音が出ない? 8 audioPlayer.play() 9 } 10

投稿2018/08/29 05:40

編集2018/08/29 05:54
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

globalplus

2018/08/29 05:55

再生出来ました。audioPlayer.play()これがないために出来なかったと思います。 ありがとうございます。
globalplus

2018/08/29 06:14

このsliderで設定した音量をアラームの音量として設定し実行させたいのですが、お手本になるサイト等ご存知でしたら教えて下さい。よろしくお願いします。
退会済みユーザー

退会済みユーザー

2018/08/29 06:21

参考にされたサイト→http://bakapro.seesaa.net/article/429338314.htmlに書いてあると思います。 よく目を通して、コードを一行一行なぜかいてあるか理解されればよろしいかと思います。 わかるように書いてありますので、落ち着いて読めばわかるはずです。 わかったつもりになって先に進むと(teratailとかで聞くと理解してなくても先に進めるので)、 あとあと大変な目に合うと思いますよ。
globalplus

2018/08/29 09:05

ありがとうございます。しっかりみてみます。もししっかりみて調べてそれでもわからなかったらアドバイス頂けたら嬉しいです。
globalplus

2018/08/30 07:48

そのサイトをじっくり見てみたのですが解決策がつかめません。他のサイト等何かヒントになるものを教えて頂けないでしょうか?
fuzzball

2018/08/30 07:57

私の質問に答えてもらえないので放置していましたが、 audioPlayer.volume = volumeSlider.value これだと、計算結果の value を代入できてないですよ。 今、ここが問題になっているのかどうかは分かりませんが‥。
退会済みユーザー

退会済みユーザー

2018/08/30 09:14 編集

fuzzballさんご指摘ありがとうございます。 確認したところ、Float型の0.0〜1.0の値がaudioPlayer.volumeに代入され、 minimum-maximum設定などデフォルトで上記のコードで動きました。 ボリューム部分のUISliderのminimum-Maximum設定などが参照先にありませんので、貼り付けたあとデフォルトのままだと思いますので。 多分質問者さんの環境でも動いてはいると思います。 なので知りたいのですが、質問者さんがおっしゃっているアラームとは何でしょうか? 憶測だと遷移元のアラームに値を渡したいという感じだと思うのですが…。 この画面で音が鳴らせないのでしょうか? それとも他の画面で鳴らす音の音量にこの画面で設定した音量を渡すことができないのでしょうか? 前者でしたら再生ボタンを作って再生してあげてください。 後者でしたら質問を立て直したほうがよいと思います。
globalplus

2018/08/30 09:53

ご返信ありがとうございます。 後者に該当しますので自分でまた調べてからわからなかったら質問し直したいと思います。 すみませんでした、その時はよろしくお願いします
退会済みユーザー

退会済みユーザー

2018/08/30 10:02 編集

え、っちょっちょっと、maximum100.0設定でこの画面のでのアラーム再生は 音量とかラベル表示とか希望通りに動いていたってことですか? ラベルの作り的はmin0.0-max1.0 がいいんじゃないでしょうか?
globalplus

2018/08/30 10:13

一応slider単体では希望通りに動いています。 左にやればmp3の音量が小さくなり、右にすると大きくなります。 ただここでsliderで設定した音量を別のviewcontrollerのアラームの音量にしたい(値渡し?dismiss値渡し?)はまだ出来てません。 min0max1に変えましたこっちの方が良かったですありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問