概要
皆さんこんにちは!
今回はpythonistaを使って録音アプリを開発してみましょう!
今回はUIを用いて録音と録音の停止をしてみましょう。
参考にしたサイト
他の方が作ったpythonistaのレコーダーモジュールです。今回はこれをUIで扱えるように改造しました。
- メモってなかった(汗)。見つかり次第貼ります。
nsってなんぞ。
最初にぶつかった疑問です。参考にしアコードの中にNSという頭文字がついているメソッドがやたらありますが基本的にApple関連のものにつくようです。由来はや情報を下をを参照のこと
チナミにnsというメソッドはpythonのオブジェクトを引数としobjective-cで使用可能なオブジェクトに変換するメソッドのようです。オブジェクト指向マンセー!!
グローバル変数を使おう!
- recorderがローカル変数だとストップできないのでグローバル変数化します
- https://www.sejuku.net/blog/58897
実際のコード
実際に開発したコードです。
- audio.py
# this is based in the audio recording example provided by omz (Ole Zorn) from objc_util import * import os import ui global started_recording global IsRecord IsRecord = 0 global recorder recorder = None def record(sender): AVAudioSession = ObjCClass('AVAudioSession') NSURL = ObjCClass('NSURL') AVAudioRecorder = ObjCClass('AVAudioRecorder') shared_session = AVAudioSession.sharedInstance() category_set = shared_session.setCategory_error_(ns('AVAudioSessionCategoryPlayAndRecord'), None) settings = {ns('AVFormatIDKey'): ns(1633772320), ns('AVSampleRateKey'):ns(44100.00), ns('AVNumberOfChannelsKey'):ns(2)} output_path = os.path.abspath('Recording.m4a') out_url = NSURL.fileURLWithPath_(ns(output_path)) global recorder recorder = AVAudioRecorder.alloc().initWithURL_settings_error_(out_url, settings, None) global started_recording started_recording = recorder.record() global IsRecord IsRecord = 1 textview = sender.superview['label1'] textview.text = '録音中' def stop(sender): textview = sender.superview['label1'] textview.text = '録音を終了します' global IsRecord if IsRecord: recorder.stop() recorder.release() IsRecord = 0 v = ui.load_view() v.present('sheet')
- audiuo.pyui
- 下の画像のように設定します。
今回は以上!めちゃくちゃプロトタイプだけどこれから改変予定!!