First thing to try:
Connect a 2.2k - 10k resistor from the arduino RX pin (the hc-05 tx pin) to ground.
If that didn't work, I recommend getting everything into a known state and eliminating some complexity. So, first let's remove the Android software from the equation. And second, let's put the module into a known baud rate.
To do this wire up the arduino and module like this:
Notice that the Key pin is connected to 3.3v. That will ensure the module is at 38400 baud on power up.
Connect the arduino to your computer with the FTDI cable. Upload the following sketch:
/* Serial Loop */
#include <SoftwareSerial.h>
#define rxPin 8
#define txPin 9
SoftwareSerial mySerial(rxPin, txPin); // RX, TX
char myChar ;
void setup() {
Serial.begin(9600);
Serial.println("AT");
mySerial.begin(38400);
mySerial.println("AT");
}
void loop() {
while (mySerial.available()) {
myChar = mySerial.read();
Serial.print(myChar);
}
while (Serial.available()) {
myChar = Serial.read();
Serial.print(myChar); //echo
mySerial.print(myChar);
}
}
With the sketch now uploaded and running, open the Arduino serial console and enter these AT commands. The serial console baud rate should be set to 9600 and line endings should be "Both NL & CR"
AT+ORGL //back to factory settings
AT+ROLE=0 //slave role - transparent serial bridge
AT+UART=9600,0,0 //default baud rate
AT+INIT //init module
You should get "OK" back from the module after each command. If you've gotten this far, we know the module is working fine and we know what baud rate it will default to now.
Hook the module back up the way you had it before. Make sure 3.3v is disconnected from key pin and make sure you have added the pulldown resistor on the RX line. Cycle the power to the module. The module should start up running 9600 baud, slave mode. Delete the module from the Android pairing list and re-pair it. The name probably will have changed. Hopefully it works correctly now.
Cheers