The crash is the first major airline incident in Indonesia since the crash of a Lion Air Boeing 737 Max in 2018 that killed all 189 passengers and crew. That plane also crashed into the Java Sea soon after takeoff from Soekarno-Hatta airport.
"We have detected signals in two points. This could be the black box - we will investigate," Bagus Puruhito, chief of Indonesia's search and rescue agency, told reporters aboard a military ship.
Indonesian Navy official Wahyudin Arif told iNEWS that they have found suspected pieces of the plane fuselage of about one meter (three feet) in length, part of a tire and human body parts.
Media reports said body parts had been taken to a police hospital for identification.
Search teams and fishermen earlier retrieved other debris and a section of an emergency chute believed to come from the jet in the seas off Jakarta.
"I am optimistic we will find (the plane) soon," Henri Alfiandi, an assistant to the chief of staff of the Indonesian Air Force, told a news briefing.
Muhammad Yassin, director of the POLAIR marine police, told local media the search is focussing on the outer ring of the Laki and Lancang islands off the Jakarta coast. The sea in this area is about 20 to 23 meters (65-75 feet) deep.
A diver involved in the search and rescue operation told Kompas TV his team had an underwater metal detector and a pinger locator to pick up signals for the plane's two black boxes.
The Indonesian meteorological agency warned of a risk of heavy rain and strong winds that could hamper the search and rescue efforts.
The Sriwijaya Air plane was a nearly 27-year-old Boeing 737-500, much older than Boeing's problem-plagued 737 MAX model. Older 737 models are widely flown and do not have the system implicated in the MAX safety crisis.
"We are in contact with our airline customer and stand ready to support them during this difficult time," Boeing said in a statement. "Our thoughts are with the crew, passengers, and their families." Distraught relatives waited in Pontianak about 740 km (460 miles) from Jakarta for news of their loved ones. At Jakarta's main airport a crisis center was set up for relatives.
Founded in 2003, Jakarta-based Sriwijaya Air group flies largely within Indonesia. The budget airline has had a solid safety record, with no onboard casualties in four incidents recorded on the Aviation Safety Network database.
In 2007, the European Union banned all Indonesian airlines following a series of crashes and reports of deteriorating oversight and maintenance since deregulation in the late 1990s. The restrictions were fully lifted in 2018.
Between 2007 and 2016, the US Federal Aviation Administration lowered its Indonesia safety evaluation to Category 2, meaning its regulatory system was inadequate.