.class public Lcom/forum/im/utils/AudioManager; .super Ljava/lang/Object; .source "AudioManager.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lcom/forum/im/utils/AudioManager$AudioStageListener; } .end annotation # static fields .field public static final MSG_ERROR_AUDIO_RECORD:I = -0x4 .field private static mInstance:Lcom/forum/im/utils/AudioManager; # instance fields .field private check:Z .field private handler:Landroid/os/Handler; .field private isPrepared:Z .field private mCurrentFilePathString:Ljava/lang/String; .field private mDirString:Ljava/lang/String; .field public mListener:Lcom/forum/im/utils/AudioManager$AudioStageListener; .field private mRecorder:Landroid/media/MediaRecorder; .field private vocAuthority:[I .field private vocNum:I # direct methods .method private constructor (Ljava/lang/String;)V .registers 3 .line 33 invoke-direct {p0}, Ljava/lang/Object;->()V const/16 v0, 0xa .line 142 new-array v0, v0, [I iput-object v0, p0, Lcom/forum/im/utils/AudioManager;->vocAuthority:[I const/4 v0, 0x0 .line 143 iput v0, p0, Lcom/forum/im/utils/AudioManager;->vocNum:I const/4 v0, 0x1 .line 144 iput-boolean v0, p0, Lcom/forum/im/utils/AudioManager;->check:Z .line 34 iput-object p1, p0, Lcom/forum/im/utils/AudioManager;->mDirString:Ljava/lang/String; return-void .end method .method private generalFileName()Ljava/lang/String; .registers 3 .line 139 new-instance v0, Ljava/lang/StringBuilder; invoke-direct {v0}, Ljava/lang/StringBuilder;->()V invoke-static {}, Ljava/util/UUID;->randomUUID()Ljava/util/UUID; move-result-object v1 invoke-virtual {v1}, Ljava/util/UUID;->toString()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 const-string v1, ".amr" invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 return-object v0 .end method .method public static getInstance(Ljava/lang/String;)Lcom/forum/im/utils/AudioManager; .registers 3 .line 38 sget-object v0, Lcom/forum/im/utils/AudioManager;->mInstance:Lcom/forum/im/utils/AudioManager; if-nez v0, :cond_17 .line 39 const-class v0, Lcom/forum/im/utils/AudioManager; monitor-enter v0 .line 40 :try_start_7 sget-object v1, Lcom/forum/im/utils/AudioManager;->mInstance:Lcom/forum/im/utils/AudioManager; if-nez v1, :cond_12 .line 41 new-instance v1, Lcom/forum/im/utils/AudioManager; invoke-direct {v1, p0}, Lcom/forum/im/utils/AudioManager;->(Ljava/lang/String;)V sput-object v1, Lcom/forum/im/utils/AudioManager;->mInstance:Lcom/forum/im/utils/AudioManager; .line 44 :cond_12 monitor-exit v0 goto :goto_17 :catchall_14 move-exception p0 monitor-exit v0 :try_end_16 .catchall {:try_start_7 .. :try_end_16} :catchall_14 throw p0 .line 46 :cond_17 :goto_17 sget-object p0, Lcom/forum/im/utils/AudioManager;->mInstance:Lcom/forum/im/utils/AudioManager; return-object p0 .end method # virtual methods .method public cancel()V .registers 3 .line 201 invoke-virtual {p0}, Lcom/forum/im/utils/AudioManager;->release()V .line 202 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->mCurrentFilePathString:Ljava/lang/String; if-eqz v0, :cond_14 .line 203 new-instance v0, Ljava/io/File; iget-object v1, p0, Lcom/forum/im/utils/AudioManager;->mCurrentFilePathString:Ljava/lang/String; invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V .line 204 invoke-virtual {v0}, Ljava/io/File;->delete()Z const/4 v0, 0x0 .line 205 iput-object v0, p0, Lcom/forum/im/utils/AudioManager;->mCurrentFilePathString:Ljava/lang/String; :cond_14 return-void .end method .method public getCurrentFilePath()Ljava/lang/String; .registers 2 .line 212 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->mCurrentFilePathString:Ljava/lang/String; return-object v0 .end method .method public getVoiceLevel(I)I .registers 10 .line 149 iget-boolean v0, p0, Lcom/forum/im/utils/AudioManager;->isPrepared:Z const/4 v1, 0x1 if-eqz v0, :cond_5b const/4 v0, -0x4 .line 151 :try_start_6 iget-object v2, p0, Lcom/forum/im/utils/AudioManager;->mRecorder:Landroid/media/MediaRecorder; invoke-virtual {v2}, Landroid/media/MediaRecorder;->getMaxAmplitude()I move-result v2 .line 152 iget-boolean v3, p0, Lcom/forum/im/utils/AudioManager;->check:Z if-eqz v3, :cond_4d .line 153 iget v3, p0, Lcom/forum/im/utils/AudioManager;->vocNum:I const/16 v4, 0xa if-lt v3, v4, :cond_46 .line 154 new-instance v3, Ljava/util/HashSet; invoke-direct {v3}, Ljava/util/HashSet;->()V const/4 v5, 0x0 move v6, v5 .line 155 :goto_1d iget v7, p0, Lcom/forum/im/utils/AudioManager;->vocNum:I if-ge v6, v7, :cond_2f .line 156 iget-object v7, p0, Lcom/forum/im/utils/AudioManager;->vocAuthority:[I aget v7, v7, v6 invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; move-result-object v7 invoke-interface {v3, v7}, Ljava/util/Set;->add(Ljava/lang/Object;)Z add-int/lit8 v6, v6, 0x1 goto :goto_1d .line 158 :cond_2f invoke-interface {v3}, Ljava/util/Set;->size()I move-result v3 if-ne v3, v1, :cond_43 .line 159 iget-object v3, p0, Lcom/forum/im/utils/AudioManager;->handler:Landroid/os/Handler; if-eqz v3, :cond_3c .line 160 invoke-virtual {v3, v0}, Landroid/os/Handler;->sendEmptyMessage(I)Z .line 161 :cond_3c iput v5, p0, Lcom/forum/im/utils/AudioManager;->vocNum:I .line 163 new-array v3, v4, [I iput-object v3, p0, Lcom/forum/im/utils/AudioManager;->vocAuthority:[I goto :goto_4d .line 165 :cond_43 iput-boolean v5, p0, Lcom/forum/im/utils/AudioManager;->check:Z goto :goto_4d .line 168 :cond_46 iget-object v4, p0, Lcom/forum/im/utils/AudioManager;->vocAuthority:[I aput v2, v4, v3 add-int/2addr v3, v1 .line 169 iput v3, p0, Lcom/forum/im/utils/AudioManager;->vocNum:I :cond_4d :goto_4d mul-int/2addr p1, v2 const v2, 0x8000 .line 172 div-int/2addr p1, v2 :try_end_52 .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_52} :catch_54 add-int/2addr p1, v1 return p1 .line 175 :catch_54 iget-object p1, p0, Lcom/forum/im/utils/AudioManager;->handler:Landroid/os/Handler; if-eqz p1, :cond_5b .line 176 invoke-virtual {p1, v0}, Landroid/os/Handler;->sendEmptyMessage(I)Z :cond_5b return v1 .end method .method public prepareAudio()V .registers 5 const/4 v0, 0x0 const/4 v1, -0x4 .line 77 :try_start_2 iput-boolean v0, p0, Lcom/forum/im/utils/AudioManager;->isPrepared:Z .line 79 new-instance v0, Ljava/io/File; iget-object v2, p0, Lcom/forum/im/utils/AudioManager;->mDirString:Ljava/lang/String; invoke-direct {v0, v2}, Ljava/io/File;->(Ljava/lang/String;)V .line 80 invoke-virtual {v0}, Ljava/io/File;->exists()Z move-result v2 if-nez v2, :cond_14 .line 81 invoke-virtual {v0}, Ljava/io/File;->mkdirs()Z .line 84 :cond_14 invoke-direct {p0}, Lcom/forum/im/utils/AudioManager;->generalFileName()Ljava/lang/String; move-result-object v2 .line 85 new-instance v3, Ljava/io/File; invoke-direct {v3, v0, v2}, Ljava/io/File;->(Ljava/io/File;Ljava/lang/String;)V .line 87 invoke-virtual {v3}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String; move-result-object v0 iput-object v0, p0, Lcom/forum/im/utils/AudioManager;->mCurrentFilePathString:Ljava/lang/String; .line 89 new-instance v0, Landroid/media/MediaRecorder; invoke-direct {v0}, Landroid/media/MediaRecorder;->()V iput-object v0, p0, Lcom/forum/im/utils/AudioManager;->mRecorder:Landroid/media/MediaRecorder; .line 91 invoke-virtual {v3}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String; move-result-object v2 invoke-virtual {v0, v2}, Landroid/media/MediaRecorder;->setOutputFile(Ljava/lang/String;)V .line 93 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->mRecorder:Landroid/media/MediaRecorder; const/4 v2, 0x1 invoke-virtual {v0, v2}, Landroid/media/MediaRecorder;->setAudioSource(I)V .line 95 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->mRecorder:Landroid/media/MediaRecorder; const/4 v3, 0x3 invoke-virtual {v0, v3}, Landroid/media/MediaRecorder;->setOutputFormat(I)V .line 97 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->mRecorder:Landroid/media/MediaRecorder; invoke-virtual {v0, v2}, Landroid/media/MediaRecorder;->setAudioEncoder(I)V .line 100 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->mRecorder:Landroid/media/MediaRecorder; invoke-virtual {v0}, Landroid/media/MediaRecorder;->prepare()V .line 102 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->mRecorder:Landroid/media/MediaRecorder; invoke-virtual {v0}, Landroid/media/MediaRecorder;->start()V .line 105 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->mListener:Lcom/forum/im/utils/AudioManager$AudioStageListener; if-eqz v0, :cond_53 .line 106 invoke-interface {v0}, Lcom/forum/im/utils/AudioManager$AudioStageListener;->wellPrepared()V .line 108 :cond_53 iput-boolean v2, p0, Lcom/forum/im/utils/AudioManager;->isPrepared:Z :try_end_55 .catch Ljava/lang/IllegalStateException; {:try_start_2 .. :try_end_55} :catch_6e .catch Ljava/io/IOException; {:try_start_2 .. :try_end_55} :catch_62 .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_55} :catch_56 goto :goto_79 :catch_56 move-exception v0 .line 123 invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V .line 124 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->handler:Landroid/os/Handler; if-eqz v0, :cond_79 .line 125 invoke-virtual {v0, v1}, Landroid/os/Handler;->sendEmptyMessage(I)Z goto :goto_79 :catch_62 move-exception v0 .line 118 invoke-virtual {v0}, Ljava/io/IOException;->printStackTrace()V .line 119 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->handler:Landroid/os/Handler; if-eqz v0, :cond_79 .line 120 invoke-virtual {v0, v1}, Landroid/os/Handler;->sendEmptyMessage(I)Z goto :goto_79 :catch_6e move-exception v0 .line 112 invoke-virtual {v0}, Ljava/lang/IllegalStateException;->printStackTrace()V .line 113 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->handler:Landroid/os/Handler; if-eqz v0, :cond_79 .line 114 invoke-virtual {v0, v1}, Landroid/os/Handler;->sendEmptyMessage(I)Z :cond_79 :goto_79 return-void .end method .method public release()V .registers 3 .line 186 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->mRecorder:Landroid/media/MediaRecorder; if-eqz v0, :cond_17 const/4 v1, 0x0 .line 187 iput-boolean v1, p0, Lcom/forum/im/utils/AudioManager;->isPrepared:Z .line 189 :try_start_7 invoke-virtual {v0}, Landroid/media/MediaRecorder;->stop()V .line 190 iget-object v0, p0, Lcom/forum/im/utils/AudioManager;->mRecorder:Landroid/media/MediaRecorder; invoke-virtual {v0}, Landroid/media/MediaRecorder;->release()V :try_end_f .catch Ljava/lang/Exception; {:try_start_7 .. :try_end_f} :catch_10 goto :goto_14 :catch_10 move-exception v0 .line 192 invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V :goto_14 const/4 v0, 0x0 .line 194 iput-object v0, p0, Lcom/forum/im/utils/AudioManager;->mRecorder:Landroid/media/MediaRecorder; :cond_17 return-void .end method .method public setHandle(Landroid/os/Handler;)V .registers 2 .line 51 iput-object p1, p0, Lcom/forum/im/utils/AudioManager;->handler:Landroid/os/Handler; return-void .end method .method public setOnAudioStageListener(Lcom/forum/im/utils/AudioManager$AudioStageListener;)V .registers 2 .line 65 iput-object p1, p0, Lcom/forum/im/utils/AudioManager;->mListener:Lcom/forum/im/utils/AudioManager$AudioStageListener; return-void .end method .method public setVocDir(Ljava/lang/String;)V .registers 2 .line 69 iput-object p1, p0, Lcom/forum/im/utils/AudioManager;->mDirString:Ljava/lang/String; return-void .end method